@ file : Jvm Name (" Channels ") Ċ Ċ package Ġorg . hm core Ċ Ċ import Ġkotlinx . serialization . decode FromString Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġnet . dv 8 tion . j da . api . Embed Builder Ċ import Ġnet . dv 8 tion . j da . api . Permission Ċ import Ġnet . dv 8 tion . j da . api . entities . Message Ċ import Ġorg . hm core . extensions . embed Ċ import Ġorg . hm core . extensions . to Webhook Ċ import Ġjava . awt . Color Ċ Ċ object ĠChannels Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġ( Server ID , ĠChannel ID ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġchannels : ĠMutable List < Discord Channel > Ġ= Ġrefresh Channels From Disk () ĊĠĠĠ Ġvar Ġservice Channels : ĠMutable List < Service Channel > Ġ= Ġrefresh Service Channels From Disk () ĊĊĠĠĠ Ġfun Ġsent To All ( message Embed : ĠMessage , Ġmsg Type : ĠMessageType ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Embed . to Webhook (). send ( WEB HOOK S . blog Posts Webhook Url ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdmin . send Dev Message ( embed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Error " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġe . stack Trace ToString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . red ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġe . stack Trace . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠMain . j das . forEach Ġ{ Ġj da Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( channel _ pair Ġin Ġchannels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! channel _ pair . type . equals ( msg Type )) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġj da . getText Channel ById ( channel _ pair . id ) Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcustom Message Ġ= Ġchannel _ pair . message ?. message Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel _ pair . mention ed Role Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġif Ġ( channel _ pair . mention ed Role Ġ== Ġ" every one ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"@ every one Ġ$ custom Message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< @ & ${ channel _ pair . mention ed Role }> Ġ$ custom Message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage ( message ). queue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel _ pair . message ?. push Anno uncement Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . cros sp ost (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( channel _ pair . message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage ( custom Message ). queue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel _ pair . message ?. push Anno uncement Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . cros sp ost (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . sendMessage ( message Embed ). queue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel _ pair . auto Publish ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . cros sp ost (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdmin . error (" Error Ġin Ġserver Ġ${ channel _ pair . id }", Ġe . message Ġ?: Ġe . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Service Message ( title : ĠString , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Message Ġ= ĠEmbed Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Author ( Admin . admin ?. name , ĠAdmin . admin ?. avatar Url , ĠAdmin . admin ?. avatar Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Footer (" This Ġwas Ġsent Ġby Ġa Ġhuman .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( channel Info Ġin Ġservice Channels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMain . j das . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġit . getText Channel ById ( channel Info . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel ?. sendMessage ( service Message )?. queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAdmin . println (" Service Ġmessage Ġdistributed Ġto Ġ${ service Channels . size } Ġchannels .") ĊĠĠĠĠĠĠĠ ĠAdmin . send Dev Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Message , Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ********* ****** ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSERVICE ĠMESSAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ------- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ********* ****** ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Every one Permission () Ġ{ ĊĠĠĠĠĠĠĠ ĠMain . j das . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( channel _ pair Ġin Ġchannels ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġit . getText Channel ById ( channel _ pair . id ) Ġ?: Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel _ pair . mention ed Role Ġ== Ġ" every one " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . guild . self Member . has Permission ( Permission . MESSAGE _ MENT ION _ E VERY ONE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdmin . warning (" Cannot Ġmention Ġeveryone Ġon Ġ${ channel . guild . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( channel . guild . self Member . has Permission ( Permission . MESSAGE _ WRITE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdmin . warning (" Cannot Ġsend Ġany Ġmessages Ġon Ġ${ channel . guild . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Channels From Disk () Ġ= ĊĠĠĠĠĠĠĠ ĠJson . decode FromString < List < Discord Channel >>( SERVER S _ FILE . read Text ()). to Mutable List () ĊĊĠĠĠ Ġfun Ġrefresh Service Channels From Disk () Ġ= ĊĠĠĠĠĠĠĠ ĠJson . decode FromString < List < Service Channel >>( SERVICE _ CHANNEL S _ FILE . read Text ()). to Mutable List () ĊĊĠĠĠ Ġfun Ġget Server Names ( server : ĠLong ? Ġ= Ġnull ) Ġ= ĠMain . j das . flatMap Ġ{ Ġj da Ġ-> ĊĠĠĠĠĠĠĠ Ġchannels . filter Ġ{ Ġserver Ġ== Ġnull Ġ|| Ġ( j da . getText Channel ById ( it . id )?. guild ?. id Long Ġ== Ġserver ) Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġj da . getText Channel ById ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdmin . warning (" Channel Ġ${ it . id } Ġis Ġno Ġlonger Ġactive !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġ"** ${ it . id }** Ġ*( inactive )* " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrole Ġ= Ġwhen Ġ( it . mention ed Role ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" every one " Ġ-> Ġ" Ġ@ every one " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" Ġ@ ${ channel . guild . get Role ById ( it . mention ed Role Ġ?: Ġ"") ?. name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpublish Ġ= Ġif Ġ( it . auto Publish ) Ġ" Ġ( publish )" Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġ" Ġ" Ġ+ Ġit . type . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"** ${ channel . guild . name }** Ġ# ${ channel . name }${ role }${ publish }${ type }${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . message Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n * ${ it . message !!. message } * ${ if Ġ( it . message !!. push Anno uncement ) Ġ" Ġ( publish )" Ġelse Ġ"" }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Service Channel Servers ( server : ĠLong ? Ġ= Ġnull ): ĠList < String > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMain . j das . flatMap Ġ{ Ġj da Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Channels . filter Ġ{ Ġserver Ġ== Ġnull Ġ|| Ġ( j da . getText Channel ById ( it . id )?. guild ?. id Long Ġ== Ġserver ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġj da . getText Channel ById ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"** ${ channel ?. guild ?. name Ġ?: Ġit . id }** Ġ# ${ channel ?. name Ġ?: Ġ"( inactive ) "} " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Server Id ( id : ĠLong ) Ġ= ĊĠĠĠĠĠĠĠ ĠMain . j das . map Ġ{ Ġit . getText Channel ById ( id ) Ġ}. first OrNull () ĊĊĠĠĠ Ġfun Ġadd Channel ( id : ĠLong , Ġmsg Type : ĠMessageType ): ĠDiscord Channel ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( channels . find Ġ{ Ġit . id Ġ== Ġid Ġ&& Ġit . type Ġ== Ġmsg Type Ġ} Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠDiscord Channel ( id , Ġmsg Type ) ĊĠĠĠĠĠĠĠ Ġchannels . add ( out ) ĊĠĠĠĠĠĠĠ Ġsave Channels () ĊĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Channels () Ġ{ ĊĠĠĠĠĠĠĠ ĠSERVER S _ FILE . write Text ( Json . encode ToString ( channels )) ĊĠĠĠĠĠĠĠ ĠSERVICE _ CHANNEL S _ FILE . write Text ( Json . encode ToString ( service Channels )) ĊĠĠĠ Ġ} Ċ }