package Ġme . me li jn . me lij nb ot . commands . mod eration Ċ Ċ import Ġme . me li jn . me lij nb ot . command util . mod eration . Mod Util Ċ import Ġme . me li jn . me lij nb ot . database . Dao Manager Ċ import Ġme . me li jn . me lij nb ot . database . ban . Ban Ċ import Ġme . me li jn . me lij nb ot . enums . Log Channel Type Ċ import Ġme . me li jn . me lij nb ot . enums . MessageType Ċ 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 . j ag tag . Mass P un ish J ag Tag Parser Args Ċ import Ġme . me li jn . me lij nb ot . internals . j ag tag . Mass P un ish ment J ag Tag Parser Ċ import Ġme . me li jn . me lij nb ot . internals . models . Embed Editor Ċ import Ġme . me li jn . me lij nb ot . internals . models . Mod ular Message Ċ 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 . Message Splitter Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Msg Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Rsp Ċ import Ġnet . dv 8 tion . j da . api . Permission Ċ import Ġnet . dv 8 tion . j da . api . entities . Guild Ċ import Ġnet . dv 8 tion . j da . api . entities . Member Ċ import Ġnet . dv 8 tion . j da . api . entities . Message Ċ import Ġnet . dv 8 tion . j da . api . entities . User Ċ import Ġjava . awt . Color Ċ Ċ class ĠMass Ban Command Ġ: ĠAbstract Command (" command . mass ban ") Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" mass Ban " ĊĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" mb ") ĊĠĠĠĠĠĠĠ Ġcommand Category Ġ= ĠCommand Category . MO DER ATION ĊĠĠĠĠĠĠĠ Ġdiscord Channel Permissions Ġ= ĠarrayOf ( Permission . BAN _ MEMBER S ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( context : ĠICommand Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( arg Size Check Failed ( context , Ġ 1 )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġdel Days Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġvar Ġoffset Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġcontext . args . size ĊĠĠĠĠĠĠĠ Ġval Ġfailed Retrie ves Ġ= Ġmutable ListOf < Int >() Ġ// Ġarg Ġindexes Ġof Ġfailed Ġarguments ĊĠĠĠĠĠĠĠ Ġval Ġusers Ġ= Ġmutable Map Of < User , ĠMember ?> () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . args [ i ] Ġ== Ġ"- r ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoffset ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġretrieve User By Args N Message ( context , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailed Retrie ves . add ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( failed Retrie ves . size Ġ> Ġ 3 Ġ&& Ġfailed Retrie ves . size Ġ> Ġusers . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Failed Ġto Ġretrieve : Ġ``` ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailed Retrie ves . join ToString (", Ġ") Ġ{ Ġcontext . args [ it ] Ġ}. escape Code block Markdown () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ``` \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Stopping Ġmass ban Ġbecause Ġmore Ġthen Ġhalf Ġof Ġthe Ġchecked Ġusers Ġhave Ġfailed Ġto Ġretrieve , Ġplease Ġremove Ġthese Ġusers Ġfrom Ġthe Ġcommand Ġand Ġtry Ġagain ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmember Ġ= Ġcontext . guild . retrieve Member ( user ). await OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member Ġ!= Ġnull ) Ġif Ġ( Mod Util . cant P un ish And Reply ( context , Ġmember )) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers [ user ] Ġ= Ġmember ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġreason Ġ= Ġcontext . getRaw Arg Part ( 1 Ġ+ Ġoffset ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( reason . isBlank ()) Ġreason Ġ= Ġ"/" ĊĠĠĠĠĠĠĠ Ġreason Ġ= Ġreason . trim () ĊĊĠĠĠĠĠĠĠ Ġvar Ġsuccess Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġupdated Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġfailed Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ(( target User , Ġmember ) Ġin Ġusers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( ban , Ġupdated Ban ) Ġ= ĠB an Command . create Ban From Active Or New ( context , Ġtarget User , Ġreason ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Ġ+= Ġif Ġ( updated Ban ) Ġ 1 Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġif Ġ( users . size Ġ< Ġ 1 1 Ġ&& Ġmember Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTemp Ban Command . send B anning DM ( context , Ġmember . user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( continue B anning ( context , Ġtarget User , Ġban , Ġdel Days , Ġmessage )) Ġsuccess ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġfailed ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfailed Ġ+= Ġfailed Retrie ves . size ĊĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġcontext . get Translation ("$ root . b anned .${ if Ġ( failed Ġ== Ġ 0 ) Ġ" success " Ġelse Ġ" ok "} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" success ", Ġsuccess ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" failed ", Ġfailed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Var In Code block (" reason ", Ġreason ) ĊĊĠĠĠĠĠĠĠ Ġval Ġban Ġ= ĠB an ( context . guild Id , Ġ- 1 , Ġcontext . author Id , Ġreason , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġb anned Message Lc Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Mass Ban Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . dao Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . guild , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusers . keys , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . author , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġban ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġdo a Manager Ġ= Ġcontext . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġlog Channel Ġ= Ġcontext . guild . get And Verify Log Channel ByType ( do a Manager , ĠLog Channel Type . M ASS _ BAN ) ĊĠĠĠĠĠĠĠ Ġlog Channel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( msg Eb Ġin Ġb anned Message Lc ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Msg ( it , Ġcontext . web Manager . prox ied HttpClient , Ġmsg Eb ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġmsg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġcontinue B anning ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠICommand Context , ĊĠĠĠĠĠĠĠ Ġtarget User : ĠUser , ĊĠĠĠĠĠĠĠ Ġban : ĠB an , ĊĠĠĠĠĠĠĠ Ġdel Days : ĠInt , ĊĠĠĠĠĠĠĠ Ġb anning Message : ĠMessage ? Ġ= Ġnull , ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġcontext . guild ĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġcontext . author ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġcontext . get Language () ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontext . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġb anned Message Dm Ġ= Ġget Ban Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage , Ġdao Manager , Ġguild , Ġtarget User , Ġauthor , Ġban , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmsg Type Ġ= ĠMessageType . BAN ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . ban ( target User , Ġdel Days ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reason ("( mass Ban ) Ġ" Ġ+ Ġcontext . author . as Tag Ġ+ Ġ": Ġ" Ġ+ Ġban . reason ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. async Ġ{ Ġdao Manager . ban Wrapper . set Ban ( ban ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġb anning Message ?. edit Message ( b anned Message Dm )?. override ( true )?. queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed Msg Ġ= Ġcontext . get Translation (" message . b anning . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb anning Message ?. edit Message ( failed Msg )?. queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Mass Ban Message ( ĊĠĠĠĠĠĠĠ Ġdao Manager : ĠDao Manager , ĊĠĠĠĠĠĠĠ Ġguild : ĠGuild , ĊĠĠĠĠĠĠĠ Ġb anned Users : ĠSet < User >, ĊĠĠĠĠĠĠĠ Ġban Author : ĠUser , ĊĠĠĠĠĠĠĠ Ġban : ĠB an ĊĠĠĠ Ġ): ĠList < Mod ular Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġban Dm Ġ= Ġdao Manager . linked Message Wrapper . getMessage ( guild . id Long , ĠMessageType . M ASS _ BAN _ LOG )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao Manager . message Wrapper . getMessage ( guild . id Long , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠgetDefault Message () ĊĊĠĠĠĠĠĠĠ Ġval Ġzone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠMass P un ish J ag Tag Parser Args ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġban Author , Ġb anned Users , Ġnull , Ġdao Manager , Ġban . reason , Ġban . un ban Reason , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġban . startTime , Ġban . endTime , Ġban . ban Id , Ġzone Id , Ġguild ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġban Dm . map All String Fields Safe Split ting ( message Splitter Ġ= ĠMessage Splitter . Embed Ld if ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) ĠMass P un ish ment J ag Tag Parser . parse J ag Tag ( args , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmessage ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠgetDefault Message (): ĠMod ular Message Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġembed Ġ= ĠEmbed Editor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Author ("{ pun ish Author Tag }{ title Spaces :{ pun ish Author Tag }} ", Ġnull , Ġ"{ pun ish Author Avatar Url }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color ( Color ( 0 x DA 3 1 FC )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Description (" ``` L DIF \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Description ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB an ĠAuthor : Ġ{ pun ish Author Tag } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB an ĠAuthor ĠId : Ġ{ pun ish Author Id } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB ann edList : Ġ{ pun ish List } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠReason : Ġ{ reason } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDuration : Ġ{ time Duration } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStart Ġof Ġban : Ġ{ startTime : null } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnd Ġof Ġban : Ġ{ endTime : null } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCase ĠId : Ġ{ pun ish Id }{ if :{ extra Lc Info } |= | null | then :| else :{ extra Lc Info }} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Description (" ``` ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMod ular Message ( null , Ġembed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ