package Ġme . me li jn . me lij nb ot . commands . mod eration Ċ Ċ import Ġme . me li jn . me lij nb ot . database . mute . Mute Ċ import Ġme . me li jn . me lij nb ot . enums . Log Channel Type Ċ import Ġme . me li jn . me lij nb ot . enums . Role Type Ċ import Ġme . me li jn . me lij nb ot . enums . Special Permission Ċ import Ġme . me li jn . me lij nb ot . internals . command . Abstract Command Ċ import Ġme . me li jn . me lij nb ot . internals . command . Command Category Ċ import Ġme . me li jn . me lij nb ot . internals . command . IC ommand Context Ċ import Ġme . me li jn . me lij nb ot . internals . command . has Permission Ċ import Ġme . me li jn . me lij nb ot . internals . translation . MESSAGE _ INTER ACT _ MEMBER _ HI ARCH Y EXCEPTION Ċ import Ġme . me li jn . me lij nb ot . internals . translation . MESSAGE _ SELF INTER ACT _ MEMBER _ HI ARCH Y EXCEPTION Ċ import Ġme . me li jn . me lij nb ot . internals . translation . PLACE HOLDER _ USER Ċ import Ġme . me li jn . me lij nb ot . internals . utils .* Ċ import Ġme . me li jn . me lij nb ot . internals . utils . checks . get And Verify Log Channel ByType Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Embed Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Msg Await EL Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Rsp Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Syntax Ċ import Ġnet . dv 8 tion . j da . api . Permission Ċ import Ġnet . dv 8 tion . j da . api . entities . Message Ċ import Ġnet . dv 8 tion . j da . api . entities . Message Embed Ċ import Ġnet . dv 8 tion . j da . api . entities . Role Ċ import Ġnet . dv 8 tion . j da . api . entities . User Ċ Ċ class ĠTemp Mute Command Ġ: ĠAbstract Command (" command . temp mute ") Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 2 7 ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" temp Mute " ĊĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" tm ", Ġ" temporary Mute ") ĊĠĠĠĠĠĠĠ Ġcommand Category Ġ= ĠCommand Category . MO DER ATION ĊĠĠĠĠĠĠĠ Ġdiscord Channel Permissions Ġ= ĠarrayOf ( Permission . MANAGE _ RO LES ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( context : ĠICommand Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context . args . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Syntax ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget User Ġ= Ġretrieve User By Args N Message ( context , Ġ 0 ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġmember Ġ= Ġcontext . guild . retrieve Member ( target User ). await OrNull () ĊĠĠĠĠĠĠĠ Ġif Ġ( member Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! context . guild . self Member . can Interact ( member )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġcontext . get Translation ( MESSAGE _ SELF INTER ACT _ MEMBER _ HI ARCH Y EXCEPTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable ( PLACE HOLDER _ USER , Ġmember . as Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! context . member . can Interact ( member ) Ġ&& Ġ! has Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSpecial Permission . PUN ISH _ BY PASS _ HIG HER . node , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġcontext . get Translation ( MESSAGE _ INTER ACT _ MEMBER _ HI ARCH Y EXCEPTION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable ( PLACE HOLDER _ USER , Ġmember . as Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġduration Args Ġ= Ġcontext . args [ 1 ]. split ( SPACE _ PATTERN ) ĊĠĠĠĠĠĠĠ Ġval Ġmute Duration Ġ= Ġ( get Duration By Args N Message ( context , Ġ 0 , Ġduration Args . size , Ġduration Args ) Ġ?: Ġreturn ) Ġ* Ġ 1 0 0 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġreason Ġ= Ġcontext . getRaw Arg Part ( 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( reason . isBlank ()) Ġreason Ġ= Ġ"/" ĊĊĊĠĠĠĠĠĠĠ Ġreason Ġ= Ġreason . trim () ĊĊĠĠĠĠĠĠĠ Ġval Ġrole Wrapper Ġ= Ġcontext . dao Manager . role Wrapper ĊĠĠĠĠĠĠĠ Ġval Ġrole Id Ġ= Ġrole Wrapper . get RoleId ( context . guild Id , ĠRole Type . M UTE ) ĊĠĠĠĠĠĠĠ Ġvar Ġmute Role : ĠRole ? Ġ= Ġcontext . guild . get Role ById ( role Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( mute Role Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġcontext . get Translation (" message . creating mut ero le ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmute Role Ġ= Ġcontext . guild . create Role () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" muted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Mention able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Ho isted ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Permissions ( Permission . MESSAGE _ READ ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reason (" Missing Ġmute Ġrole , Ġcreating Ġone ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. await () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrole Wrapper . set Role ( context . guild Id , ĠRole Type . M UTE , Ġmute Role . id Long ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Failed Ġ= Ġcontext . get Translation (" message . creating mut ero le . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Var In Code block (" cause ", Ġt . message Ġ?: Ġ"/") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg Failed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mute Role Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmute Role Acquire d ( context , Ġtarget User , Ġreason , Ġmute Role , Ġmute Duration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġmute Role Acquire d ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠICommand Context , ĊĠĠĠĠĠĠĠ Ġtarget User : ĠUser , ĊĠĠĠĠĠĠĠ Ġreason : ĠString , ĊĠĠĠĠĠĠĠ Ġmute Role : ĠRole , ĊĠĠĠĠĠĠĠ Ġmute Duration : ĠLong ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactive Mute : ĠM ute ? Ġ= Ġcontext . dao Manager . mute Wrapper . getActive Mute ( context . guild Id , Ġtarget User . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġmute Ġ= ĠM ute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . guild Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget User . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . author Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreason , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= ĠSystem . currentTimeMillis () Ġ+ Ġmute Duration ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( active Mute Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmute . mute Id Ġ= Ġactive Mute . mute Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmute . startTime Ġ= Ġactive Mute . startTime ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmut ing Ġ= Ġcontext . get Translation (" message . mut ing ") ĊĊĠĠĠĠĠĠĠ Ġval Ġprivate Channel Ġ= Ġif Ġ( context . guild . is Member ( target User )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget User . open Private Channel (). await OrNull () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmessage : ĠMessage ? Ġ= Ġprivate Channel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Msg Await EL ( it , Ġmut ing ) ĊĠĠĠĠĠĠĠ Ġ} ?. first OrNull () ĊĊĠĠĠĠĠĠĠ Ġcontinue Mut ing ( context , Ġmute Role , Ġtarget User , Ġmute , Ġactive Mute , Ġmessage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġcontinue Mut ing ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠICommand Context , ĊĠĠĠĠĠĠĠ Ġmute Role : ĠRole , ĊĠĠĠĠĠĠĠ Ġtarget User : ĠUser , ĊĠĠĠĠĠĠĠ Ġmute : ĠM ute , ĊĠĠĠĠĠĠĠ Ġactive Mute : ĠM ute ?, ĊĠĠĠĠĠĠĠ Ġmut ing Message : ĠMessage ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġcontext . guild ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġcontext . author ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġcontext . get Language () ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontext . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġzone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġpriv Zone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long , Ġtarget User . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġmut ed Message Dm Ġ= Ġget Mute Message ( language , Ġpriv Zone Id , Ġguild , Ġtarget User , Ġauthor , Ġmute ) ĊĠĠĠĠĠĠĠ Ġval Ġmut ed Message Lc Ġ= Ġget Mute Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzone Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget User , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauthor , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmute , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget User . is Bot , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmut ing Message Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget Member Ġ= Ġguild . retrieve Member ( target User ). await OrNull () ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( target Member Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeath ( mut ing Message , Ġmut ed Message Dm , Ġcontext , Ġmut ed Message Lc , Ġactive Mute , Ġmute , Ġtarget User ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao Manager . mute Wrapper . set Mute ( mute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . add Role To Member ( target Member , Ġmute Role ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reason ("( temp Mute ) Ġ${ context . author . as Tag }: Ġ" Ġ+ Ġmute . reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. async Ġ{ Ġdao Manager . mute Wrapper . set Mute ( mute ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeath ( mut ing Message , Ġmut ed Message Dm , Ġcontext , Ġmut ed Message Lc , Ġactive Mute , Ġmute , Ġtarget User ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed Msg Ġ= Ġcontext . get Translation (" message . mut ing . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmut ing Message ?. edit Message ( failed Msg )?. queue () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġcontext . get Translation ("$ root . failure ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Variable ( PLACE HOLDER _ USER , Ġtarget User . as Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Var In Code block (" cause ", Ġt . message Ġ?: Ġ"/") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġdeath ( ĊĠĠĠĠĠĠĠ Ġmut ing Message : ĠMessage ?, ĊĠĠĠĠĠĠĠ Ġmut ed Message Dm : ĠMessage Embed , ĊĠĠĠĠĠĠĠ Ġcontext : ĠICommand Context , ĊĠĠĠĠĠĠĠ Ġmut ed Message Lc : ĠMessage Embed , ĊĠĠĠĠĠĠĠ Ġactive Mute : ĠM ute ?, ĊĠĠĠĠĠĠĠ Ġmute : ĠM ute , ĊĠĠĠĠĠĠĠ Ġtarget User : ĠUser ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmut ing Message ?. edit Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmut ed Message Dm ĊĠĠĠĠĠĠĠ Ġ) ?. override ( true )?. queue () ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontext . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġlog Channel Ġ= Ġcontext . guild . get And Verify Log Channel ByType ( dao Manager , ĠLog Channel Type . TEMP _ M UTE ) ĊĠĠĠĠĠĠĠ Ġlog Channel ?. let Ġ{ Ġit 1 Ġ-> Ġsend Embed ( dao Manager . embed Disabled Wrapper , Ġit 1 , Ġmut ed Message Lc ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġcontext . get Translation ("$ root . success " Ġ+ Ġif Ġ( active Mute Ġ!= Ġnull ) Ġ". updated " Ġelse Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Variable ( PLACE HOLDER _ USER , Ġtarget User . as Tag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" endTime ", Ġmute . endTime ?. as Epoch Millis To DateTime ( context . getTime Zone Id ()) Ġ?: Ġ" none ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Var In Code block (" reason ", Ġmute . reason ) ĊĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg ) ĊĠĠĠ Ġ} Ċ } ĊĊ