package Ġcom . ter r ast ud ios . ts bot . commands Ċ Ċ import Ġcom . be ust . kl ax on . Kl ax on Ċ import Ġcom . ter r ast ud ios . ts bot . T SB ot Ċ import Ġcom . ter r ast ud ios . ts bot . core . commands . annotations . Discord Command Ċ import Ġcom . ter r ast ud ios . ts bot . core . data . Color Data Ċ import Ġcom . ter r ast ud ios . ts bot . core . data . Custom Command Ċ import Ġcom . ter r ast ud ios . ts bot . core . events . Command Event Ċ import Ġcom . ter r ast ud ios . ts bot . core . scheduling . Runnable Scheduler Ċ import Ġcom . ter r ast ud ios . ts bot . core . util . MessageType Ċ import Ġcom . ter r ast ud ios . ts bot . core . util . Resource Utils Ċ import Ġcom . ter r ast ud ios . ts bot . core . util . extensions . is Int Ċ import Ġcom . ter r ast ud ios . ts bot . core . util . extensions . within Bounds Ċ import Ġnet . dv 8 tion . j da . api . Permission Ċ import Ġjava . awt . Color Ċ import Ġjava . io . FileWriter Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠMake Command Command Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Objects Ġ= ĠResource Utils . getResource Array < Custom Command > ("/ custom commands . json ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparsed Objects . forEach Ġ{ ĠT SB ot . command Handler . custom Commands [ it . name ] Ġ= Ġit Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRunnable Scheduler . Builder ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠK l ax on (). toJson String ( T SB ot . command Handler . custom Commands . values ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter Ġ= ĠFile Writer ( Resource Utils . get FilePath ("/ custom commands . json ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . write ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). every ( 1 0 , ĠTimeUnit . SECONDS ). after ( 5 , ĠTimeUnit . SECONDS ). build (). run () ĊĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Discord Command ( ĊĠĠĠĠĠĠĠ Ġcommand Name Ġ= Ġ" make command ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" M akes Ġa Ġcommand Ġthat Ġwill Ġembed Ġa Ġmessage Ġon Ġexecution .", ĊĠĠĠĠĠĠĠ Ġusage Ġ= Ġ" make command Ġ< command - name >", ĊĠĠĠĠĠĠĠ Ġaliases Ġ= Ġ[" m ck command ", Ġ" make cmd ", Ġ" create command ", Ġ" create cmd ", Ġ" add command "], ĊĠĠĠĠĠĠĠ Ġpermission Ġ= ĠPermission . ADMIN ISTR ATOR , ĊĠĠĠĠĠĠĠ Ġmin Args Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġmax Args Ġ= Ġ 1 ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġmake Command ( event : ĠCommand Event ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Custom Command Ġ= ĠCustom Command ( name Ġ= Ġevent . args [ 0 ]) ĊĠĠĠĠĠĠĠ ĠT SB ot . command Handler . custom Commands [ event . args [ 0 ]] Ġ= Ġnew Custom Command ĊĠĠĠĠĠĠĠ Ġevent . reply ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessageType . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Success ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Added Ġcommand Ġ`${ event . args [ 0 ]} `. ĠTo Ġedit Ġthis Ġcommand , Ġuse Ġ`${ T SB ot . config . prefix } edit command `. " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Discord Command ( ĊĠĠĠĠĠĠĠ Ġcommand Name Ġ= Ġ" edit command ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Ed its Ġan Ġexisting Ġcommand ", ĊĠĠĠĠĠĠĠ Ġusage Ġ= Ġ" edit command Ġ< command - name > Ġ< title Ġ| Ġtext Ġ| Ġcolor Ġ| Ġimage Ġ| Ġname > Ġ< new - value >", ĊĠĠĠĠĠĠĠ Ġmin Args Ġ= Ġ 3 ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġedit Command ( event : ĠCommand Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( T SB ot . command Handler . custom Commands . containsKey ( event . args [ 0 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠT SB ot . command Handler . custom Commands [ event . args [ 0 ]] !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewValue Ġ= Ġevent . args [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . args [ 1 ]. toLowerCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" title " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . title Ġ= Ġevent . args . copyOf Range ( 2 , Ġevent . args . size ). join ToString (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( MessageType . SUCCESS , Ġ" Success ", Ġ" Changed Ġtitle Ġto Ġ${ event . args . copyOf Range ( 2 , Ġevent . args . size ). join ToString (" Ġ") }. ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" text " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . text Ġ= Ġevent . args . copyOf Range ( 2 , Ġevent . args . size ). join ToString (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( MessageType . SUCCESS , Ġ" Success ", Ġ" Changed Ġdescription Ġto Ġ${ event . args . copyOf Range ( 2 , Ġevent . args . size ). join ToString (" Ġ") }. ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" color " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . args . size Ġ== Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! event . args [ 2 ]. is Int () Ġ|| Ġ! event . args [ 2 ]. is Int () Ġ|| Ġ! event . args [ 4 ]. is Int () Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! event . args [ 2 ]. toInt (). within Bounds ( 0 , Ġ 2 5 5 ) Ġ|| Ġ! event . args [ 2 ]. toInt (). within Bounds ( 0 , Ġ 2 5 5 ) Ġ|| Ġ! event . args [ 4 ]. toInt (). within Bounds ( 0 , Ġ 2 5 5 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( MessageType . ERROR , Ġ" Invalid ĠRGB Ġvalue ", Ġ" One Ġof Ġthe Ġspecified ĠRGB Ġvalues Ġwere Ġeither Ġout Ġof Ġbounds Ġor Ġnot Ġan ĠInteger .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . color Ġ= ĠColor Data ( event . args [ 2 ]. toInt (), Ġevent . args [ 3 ]. toInt (), Ġevent . args [ 4 ]. toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessageType . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Success ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Changed Ġcolor Ġto Ġ(${ event . args [ 2 ]}, Ġ${ event . args [ 3 ]}, Ġ${ event . args [ 4 ]} )." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessageType . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Invalid Ġcolor Ġparameters ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġspecify Ġthe Ġ 3 ĠRGB Ġvalues Ġfor Ġthe Ġcolor .\ n \ n `${ T SB ot . config . prefix } edit message Ġ${ event . args [ 0 ]} Ġcolor ĠR ĠG ĠB " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" image " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . image URL Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( MessageType . SUCCESS , Ġ" Success ", Ġ" Changed Ġimage ĠURL Ġto Ġ$ newValue .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT SB ot . command Handler . custom Commands . remove ( command . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand . name Ġ= ĠnewValue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT SB ot . command Handler . custom Commands [ newValue ] Ġ= Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( MessageType . SUCCESS , Ġ" Success ", Ġ" Changed Ġname Ġto Ġ${ command . name }. ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMessageType . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Invalid ĠCustom ĠCommand ĠProperty ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Properties : Ġ` title `, Ġ` text `, Ġ` color `, Ġ` image `, Ġ` name `" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT SB ot . command Handler . custom Commands [ event . args [ 0 ]] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . reply ( MessageType . ERROR , Ġ" Invalid ĠCustom ĠCommand ", Ġ" Please Ġspecify Ġan Ġexisting ĠCustom ĠCommand .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }