package Ġnet . fabric mc . bot . extensions Ċ Ċ import Ġcom . gitlab . k ord lib . common . entity . Permission Ċ import Ġcom . gitlab . k ord lib . core . behavior . channel . create Embed Ċ import Ġcom . gitlab . k ord lib . core . behavior . channel . edit Ċ import Ġcom . gitlab . k ord lib . core . entity . Permission Overwrite Ċ import Ġcom . gitlab . k ord lib . core . entity . channel .* Ċ import Ġcom . kot l ind is cord . k ord . extensions . Ext ensible Bot Ċ import Ġcom . kot l ind is cord . k ord . extensions . checks . top Role High er OrEqual Ċ import Ġcom . kot l ind is cord . k ord . extensions . extensions . Extension Ċ import Ġcom . kot l ind is cord . k ord . extensions . utils . Scheduler Ċ import Ġnet . fabric mc . bot . conf . config Ċ import Ġnet . fabric mc . bot . constants . Colo urs Ċ import Ġnet . fabric mc . bot . default Check Ċ import Ġnet . fabric mc . bot . enums . Roles Ċ import Ġnet . fabric mc . bot . to Human Ċ import Ġnet . fabric mc . bot . utils . mod Log Ċ import Ġnet . fabric mc . bot . utils . require Guild Channel Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ import Ġjava . time . temporal . Ch rono Unit Ċ import Ġjava . util .* Ċ Ċ private Ġconst Ġval ĠS LOW MODE _ LIMIT Ġ= Ġ 6 0 Ġ* Ġ 6 0 Ġ* Ġ 6 Ġ Ġ// ĠSix Ġhours Ċ private Ġconst Ġval ĠDEFAULT _ LOCK _ MIN UTES Ġ= Ġ 5 L Ċ Ċ private Ġconst Ġval ĠUN ITS Ġ= Ġ"** __ Dur ations __ ** \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" Dur ations Ġare Ġspecified Ġin Ġpairs Ġof Ġamounts Ġand Ġunits Ġ- Ġfor Ġexample , Ġ` 1 2 d ` Ġwould Ġbe Ġ 1 2 Ġdays . Ġ" Ġ+ ĊĠĠĠĠĠĠĠ Ġ" Compound Ġdur ations Ġare Ġsupported Ġ- Ġfor Ġexample , Ġ` 2 d 1 2 h ` Ġwould Ġbe Ġ 2 Ġdays Ġand Ġ 1 2 Ġhours .\ n \ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ" The Ġfollowing Ġunits Ġare Ġsupported :\ n \ n " Ġ+ ĊĊĠĠĠĠĠĠĠ Ġ"** Seconds :** Ġ` s `, Ġ` sec `, Ġ` second `, Ġ` seconds `\ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ"** Minutes :** Ġ` m `, Ġ` mi `, Ġ` min `, Ġ` minute `, Ġ` minutes `\ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ"** Hours :** Ġ` h `, Ġ` hour `, Ġ` hours `\ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ"** Days :** Ġ` d `, Ġ` day `, Ġ` days `\ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ"** Week s :** Ġ` w `, Ġ` week `, Ġ` week s `\ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ"** Months :** Ġ` mo `, Ġ` month `, Ġ` months `\ n " Ġ+ ĊĠĠĠĠĠĠĠ Ġ"** Years :** Ġ` y `, Ġ` year `, Ġ` years `" Ċ Ċ /** Ċ Ġ* ĠMod eration Ġextension , Ġcontaining Ġnon - in fraction Ġcommands Ġfor Ġserver Ġmanagement . Ċ Ġ*/ Ċ class ĠMod eration Extension ( bot : ĠExt ensible Bot ) Ġ: ĠExtension ( bot ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġname Ġ= Ġ" mod eration " ĊĊĠĠĠ Ġprivate Ġval Ġscheduler Ġ= ĠScheduler () ĊĠĠĠ Ġprivate Ġval Ġlock Jobs : ĠMutable Map < Long , ĠUUID > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠArguments Ġfor Ġcommands Ġthat Ġtake Ġa Ġduration Ġand Ġchannel . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġduration Int ĠInt - style Ġduration Ġrepresenting Ġthe Ġduration . ĊĠĠĠĠ Ġ* Ġ@ param Ġduration ĠDuration Ġobject Ġrepresenting Ġthe Ġduration . ĊĠĠĠĠ Ġ* Ġ@ param Ġchannel ĠChannel Ġto Ġaction Ġthe Ġcommand Ġin . ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġdata Ġclass ĠDuration Channel Command Args ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Int : ĠLong ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration : ĠDuration ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel : ĠChannel ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠArguments Ġfor Ġthe Ġunlock Ġcommand . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġchannel ĠChannel Ġto Ġaction Ġthe Ġcommand Ġin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠUn lock Args ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel : ĠChannel ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcommand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" lock " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" sh h ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Lock Ġthe Ġchannel Ġand Ġprevent Ġusers Ġfrom Ġtalking Ġwithin Ġit . ĠDefaults Ġto Ġthe Ġcurrent Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" channel , Ġand Ġa Ġ 5 Ġminute Ġduration .\ n \ n $ UNITS " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġ"[ duration ] Ġ[ channel ]" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: default Check , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Role High er OrEqual ( config . get Role ( Roles . MO DER ATOR )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! message . require Guild Channel ( null )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( parse < Duration Channel Command Args >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġmessage . author !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Obj Ġ= Ġ( channel Ġ?: Ġmessage . channel ). as Channel () Ġas ĠGuild Channel ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Obj Ġ= Ġduration Ġ?: Ġif Ġ( duration Int Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of ( duration Int , ĠCh rono Unit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of ( DEFAULT _ LOCK _ MIN UTES , ĠCh rono Unit . MIN UTES ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperms Ġ= Ġchannel Obj . get Permission Over writes For Role ( channel Obj . guild Id ) Ġ Ġ// Ġ@ every one ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠPermission Overwrite . for Every one ( channel Obj . guild Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperms Obj Ġ= ĠPermission Overwrite . for Every one ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Obj . guild Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperms . allowed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperms . den ied Ġ+ ĠPermission . Send Messages Ġ+ ĠPermission . Add Re actions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Obj . add Overwrite ( perms Obj ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . BL UR PLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Channel Ġlocked " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Channel Ġlocked Ġfor Ġ${ duration Obj . to Human ()} : Ġ${ channel Obj . mention }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mod erator " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ"${ author . mention } Ġ(${ author . tag } Ġ/ Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"` ${ author . id . longValue }`) " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . channel . create Embed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . POSITIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Channel Ġlocked " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Channel Ġlocked Ġfor Ġ${ duration Obj . to Human ()} : Ġ${ channel Obj . mention }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġchannel Obj . id . longValue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lock Jobs . containsKey ( channelId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler . cancel Job ( lock Jobs [ channelId ] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Jobs . remove ( channelId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Jobs [ channelId ] Ġ= Ġscheduler . schedule < Nothing ? >( duration Obj . to Millis (), Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Obj . add Overwrite ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Overwrite . for Every one ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Obj . guild Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperms . allowed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperms . den ied Ġ- ĠPermission . Send Messages Ġ- ĠPermission . Add Re actions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . BL UR PLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Channel Ġun locked " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Channel Ġun locked Ġautomatically : Ġ${ channel Obj . mention }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Jobs . remove ( channelId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcommand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" unlock " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" un - lock ", Ġ" un sh h ", Ġ" un - sh h ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Unlock Ġa Ġpreviously - unlocked Ġchannel . ĠDefaults Ġto Ġthe Ġcurrent Ġchannel Ġif Ġyou Ġdon 't Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" specify Ġone ." ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġ"[ channel ]" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: default Check , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Role High er OrEqual ( config . get Role ( Roles . MO DER ATOR )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! message . require Guild Channel ( null )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( parse < Unlock Args >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġmessage . author !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Obj Ġ= Ġ( channel Ġ?: Ġmessage . channel ). as Channel () Ġas ĠGuild Channel ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperms Ġ= Ġchannel Obj . get Permission Over writes For Role ( channel Obj . guild Id ) Ġ Ġ// Ġ@ every one ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠPermission Overwrite . for Every one ( channel Obj . guild Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperms Obj Ġ= ĠPermission Overwrite . for Every one ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . guild Snow flake , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperms . allowed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġperms . den ied Ġ- ĠPermission . Send Messages Ġ- ĠPermission . Add Re actions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Obj . add Overwrite ( perms Obj ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . BL UR PLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Channel Ġun locked " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Channel Ġun locked : Ġ${ channel Obj . mention }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mod erator " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ"${ author . mention } Ġ(${ author . tag } Ġ/ Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"` ${ author . id . longValue }`) " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . channel . create Embed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . POSITIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Channel Ġun locked " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Channel Ġun locked : Ġ${ channel Obj . mention }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġchannel Obj . id . longValue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lock Jobs . containsKey ( channelId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler . cancel Job ( lock Jobs [ channelId ] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlock Jobs . remove ( channelId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcommand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" slow mode " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" slow ", Ġ" sm ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Enable Ġslow mode Ġfor Ġa Ġchannel , Ġwith Ġthe Ġgiven Ġmessage Ġinterval .\ n \ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" By Ġdefault , Ġthis Ġcomment Ġwill Ġuse Ġthe Ġcurrent Ġchannel Ġ- Ġspecify Ġone Ġafter Ġthe Ġduration " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" to Ġtarget Ġthat Ġchannel Ġinstead .\ n \ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" O mit Ġthe Ġduration Ġor Ġset Ġit Ġto Ġ` 0 s ` Ġto Ġdisable .\ n \ n " Ġ+ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN ITS ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsignature Ġ= Ġ"[ duration ] Ġ[ channel ]" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: default Check , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Role High er OrEqual ( config . get Role ( Roles . MO DER ATOR )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! message . require Guild Channel ( null )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( parse < Duration Channel Command Args >()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġmessage . author !! ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . duration Ġ!= Ġnull Ġ&& Ġthis . duration Int Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . channel . create Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ author . mention } ĠProvide Ġan Ġinteger Ġor Ġa Ġduration Ġwith Ġunits , Ġnot Ġboth ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Obj Ġ= Ġduration Ġ?: Ġif Ġ( duration Int Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . of ( duration Int , ĠCh rono Unit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDuration . ZERO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseconds : ĠInt Ġ= Ġduration Obj . seconds . toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( seconds Ġ> ĠS LOW MODE _ LIMIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . channel . create Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ author . mention } ĠDuration Ġshould Ġbe Ġno Ġlonger Ġthan Ġ 6 Ġhours ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ action ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġ( this . channel Ġ?: Ġmessage . channel . as Channel ()) Ġas ĠText Channel ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( seconds Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . BL UR PLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Slow mode Ġenabled " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Slow mode Ġset Ġto Ġ${ duration Obj . to Human ()} Ġin Ġ${ channel . mention }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mod erator " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ"${ author . mention } Ġ(${ author . tag } Ġ/ Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"` ${ author . id . longValue }`) " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . channel . create Embed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . POSITIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Slow mode Ġenabled " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Slow mode Ġset Ġto Ġ${ duration Obj . to Human ()} Ġin Ġ${ channel . mention }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmod Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . BL UR PLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Slow mode Ġdisabled " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Slow mode Ġdisabled Ġin Ġ${ channel . mention }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Mod erator " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġ"${ author . mention } Ġ(${ author . tag } Ġ/ Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"` ${ author . id . longValue }`) " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . channel . create Embed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠCo lo urs . POSITIVE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Slow mode Ġdisabled " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Slow mode Ġdisabled Ġin Ġ${ channel . mention }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrate Limit Per User Ġ= Ġseconds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ