package Ġme . me li jn . me lij nb ot . objects . utils Ċ Ċ import Ġkotlinx . coroutines . future . await Ċ import Ġme . me li jn . me lij nb ot . Container Ċ import Ġme . me li jn . me lij nb ot . commands . mod eration .* Ċ import Ġme . me li jn . me lij nb ot . database . aut op un ish ment . P un ish ment Ċ import Ġme . me li jn . me lij nb ot . database . ban . Ban Ċ import Ġme . me li jn . me lij nb ot . database . ban . Soft Ban Ċ import Ġme . me li jn . me lij nb ot . database . kick . Kick Ċ import Ġme . me li jn . me lij nb ot . database . mute . Mute Ċ import Ġme . me li jn . me lij nb ot . database . warn . Warn Ċ import Ġme . me li jn . me lij nb ot . enums . Log Channel Type Ċ import Ġme . me li jn . me lij nb ot . enums . P un ish ment Type Ċ import Ġme . me li jn . me lij nb ot . enums . Role Type Ċ import Ġme . me li jn . me lij nb ot . objects . translation . get Language Ċ import Ġme . me li jn . me lij nb ot . objects . translation . i 1 8 n Ċ import Ġme . me li jn . me lij nb ot . objects . utils . checks . get And Verify Log Channel ByType Ċ import Ġme . me li jn . me lij nb ot . objects . utils . checks . get And Verify Role ByType Ċ import Ġnet . dv 8 tion . j da . api . entities . Member Ċ Ċ object ĠPP Utils Ġ{ ĊĊĠĠĠ Ġ// ĠUpdates Ġthe Ġp un ish ment Ġpoints Ġof Ġthe Ġuser Ġand Ġchecks Ġfor Ġnew Ġp un ish ment Ġpoint Ġgoal Ġhits , Ġthen Ġapplies Ġthe Ġgoals Ġif Ġhit ĊĠĠĠ Ġsuspend Ġfun Ġupdate PP ( member : ĠMember , Ġpp Map : ĠMap < String , ĠLong >, Ġcontainer : ĠContainer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Id Ġ= Ġmember . guild . id Long ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġap Wrapper Ġ= Ġdao Manager . auto P un ish ment Wrapper ĊĠĠĠĠĠĠĠ Ġval Ġold PP Map Ġ= Ġap Wrapper . auto P un ish ment Cache . get ( Pair ( guild Id , Ġmember . id Long )). await () ĊĠĠĠĠĠĠĠ Ġap Wrapper . set ( guild Id , Ġmember . id Long , Ġpp Map ) ĊĊĠĠĠĠĠĠĠ Ġval Ġap g Wrapper Ġ= Ġdao Manager . auto P un ish ment Group Wrapper ĊĠĠĠĠĠĠĠ Ġval Ġp gs Ġ= Ġap g Wrapper . auto P un ish ment Cache . get ( guild Id ). await () ĊĊĠĠĠĠĠĠĠ Ġval Ġp un ish ments Ġ= Ġdao Manager . pun ish ment Wrapper . pun ish ment Cache . get ( guild Id ). await () ĊĠĠĠĠĠĠĠ Ġfor Ġ( pg Ġin Ġp gs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġpp Map . keys . first OrNull Ġ{ Ġkey Ġ-> Ġkey Ġ== Ġpg . groupName Ġ} Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Points Ġ= Ġpp Map [ key ] Ġ?: Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Points Ġ= Ġold PP Map . get OrDefault ( pg . groupName , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentries Ġ= Ġpg . point Goal Map . filter Ġ{ Ġ( tp , Ġ_) Ġ-> Ġtp Ġin Ġ( old Points Ġ+ Ġ 1 ) .. new Points Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġentries ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp un ish ment Ġ= Ġp un ish ments . first Ġ{ Ġ( name ) Ġ-> Ġname Ġ== Ġentry . value Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply P un ish ment ( member , Ġp un ish ment , Ġcontainer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp un ish ment . pun ish ment Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpg . point Goal Map ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠApplies Ġthe Ġcorrect Ġp un ish ment Ġto Ġthe Ġmember ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply P un ish ment ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( pun ish ment . pun ish ment Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO Ġ(" Permission Ġchecks Ġand Ġlogging Ġin Ġcase Ġof Ġmissing Ġstuff ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . BAN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdel Days Ġ= Ġp un ish ment . extra Map . getInt (" del Days ", Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġp un ish ment . extra Map . getLong (" duration ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ull Ġ= Ġif Ġ( duration Ġ== Ġ- 1 L ) Ġnull Ġelse Ġduration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Ban ( member , Ġp un ish ment , Ġcontainer , Ġdel Days , Ġd ull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . S OF TB AN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdel Days Ġ= Ġp un ish ment . extra Map . getInt (" del Days ", Ġ 7 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Soft Ban ( member , Ġp un ish ment , Ġcontainer , Ġdel Days ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . M UTE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġp un ish ment . extra Map . getLong (" duration ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ull Ġ= Ġif Ġ( duration Ġ== Ġ- 1 L ) Ġnull Ġelse Ġduration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Mute ( member , Ġp un ish ment , Ġcontainer , Ġd ull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . K ICK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Kick ( member , Ġp un ish ment , Ġcontainer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . WARN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Warn ( member , Ġp un ish ment , Ġcontainer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . ADD ROLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġp un ish ment . extra Map . getLong (" duration ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ull Ġ= Ġif Ġ( duration Ġ== Ġ- 1 L ) Ġnull Ġelse Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrole Id Ġ= Ġp un ish ment . extra Map . getLong (" role ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( role Id Ġ== Ġ- 1 L ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Add Role ( member , Ġp un ish ment , Ġcontainer , Ġd ull , Ġrole Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP un ish ment Type . RE MO VER O LE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġp un ish ment . extra Map . getLong (" duration ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd ull Ġ= Ġif Ġ( duration Ġ== Ġ- 1 L ) Ġnull Ġelse Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrole Id Ġ= Ġp un ish ment . extra Map . getLong (" role ", Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( role Id Ġ== Ġ- 1 L ) Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Remove Role ( member , Ġp un ish ment , Ġcontainer , Ġd ull , Ġrole Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Remove Role ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer , Ġduration : ĠLong ?, Ġrole Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= Ġdao Manager . temp Role Wrapper ĊĠĠĠĠĠĠĠ Ġval Ġrole Ġ= Ġguild . get Role ById ( role Id ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġguild . remove Role From Member ( member , Ġrole ). reason (" pun ish Ġrole "). await Bool () ĊĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ!= Ġnull Ġ&& Ġsuccess ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper . add Temp Role ( guild . id Long , Ġmember . id Long , Ġrole Id , Ġduration , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Add Role ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer , Ġduration : ĠLong ?, Ġrole Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġwrapper Ġ= Ġdao Manager . temp Role Wrapper ĊĠĠĠĠĠĠĠ Ġval Ġrole Ġ= Ġguild . get Role ById ( role Id ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġguild . add Role To Member ( member , Ġrole ). reason (" pun ish Ġrole "). await Bool () ĊĠĠĠĠĠĠĠ Ġif Ġ( duration Ġ!= Ġnull Ġ&& Ġsuccess ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper . add Temp Role ( guild . id Long , Ġmember . id Long , Ġrole Id , Ġduration , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Ban ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer , Ġdel Days : ĠInt , Ġduration : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpc Ġ= Ġmember . user . open Private Channel (). await OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġj da Ġ= Ġmember . j da ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġlang Ġ= Ġget Language ( dao Manager , Ġmember . id Long , Ġguild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġb anning Ġ= Ġi 1 8 n . get Translation ( lang , Ġ" message . b anning ") ĊĠĠĠĠĠĠĠ Ġval Ġb anning Message Ġ= Ġpc ?. sendMessage ( b anning )?. await OrNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġban Ġ= ĠB an ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj da . self User . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp un ish ment . reason , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration ?. times ( 1 0 0 0 )?. plus ( System . currentTimeMillis ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdao Manager . ban Wrapper . set Ban ( ban ) ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= Ġmember . ban ( del Days , Ġp un ish ment . reason ). reason (" pun ish Ġban "). await EX () ĊĠĠĠĠĠĠĠ Ġif Ġ( ex Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed Ġ= Ġi 1 8 n . get Translation ( lang , Ġ" message . b anning . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb anning Message ?. edit Message ( failed )?. queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġzone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġpriv Zone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long , Ġmember . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġban Message DM Ġ= Ġget Ban Message ( lang , Ġpriv Zone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġban ) ĊĠĠĠĠĠĠĠ Ġval Ġban Message Log Ġ= Ġget Ban Message ( lang , Ġzone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġban , Ġtrue , Ġmember . user . is Bot , Ġb anning Message Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġb anning Message ?. edit Message ( ban Message DM )?. override ( true )?. queue () ĊĊĠĠĠĠĠĠĠ Ġval Ġlc Type Ġ= Ġif Ġ( duration Ġ== Ġnull ) ĠLog Channel Type . PER MAN ENT _ BAN Ġelse ĠLog Channel Type . TEMP _ BAN ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġguild . get And Verify Log Channel ByType ( dao Manager , Ġlc Type ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsend Embed ( dao Manager . embed Disabled Wrapper , Ġchannel , Ġban Message Log ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Soft Ban ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer , Ġdel Days : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpc Ġ= Ġmember . user . open Private Channel (). await OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġj da Ġ= Ġmember . j da ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . 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 , Ġmember . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġlang Ġ= Ġget Language ( dao Manager , Ġmember . id Long , Ġguild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġsoft B anning Ġ= Ġi 1 8 n . get Translation ( lang , Ġ" message . soft b anning ") ĊĠĠĠĠĠĠĠ Ġval Ġsoft B anning Message Ġ= Ġpc ?. sendMessage ( soft B anning )?. await OrNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġsoft Ban Ġ= ĠSoft Ban ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj da . self User . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp un ish ment . reason , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdao Manager . soft Ban Wrapper . add Soft Ban ( soft Ban ) ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= Ġmember . ban ( del Days , Ġp un ish ment . reason ). await EX () ĊĠĠĠĠĠĠĠ Ġif Ġ( ex Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed Ġ= Ġi 1 8 n . get Translation ( lang , Ġ" message . soft b anning . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsoft B anning Message ?. edit Message ( failed )?. queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġguild . un ban ( member . user ). reason (" soft ban "). queue () ĊĊĠĠĠĠĠĠĠ Ġval Ġsoft Ban Message DM Ġ= Ġget Soft Ban Message ( lang , Ġpriv Zone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġsoft Ban ) ĊĠĠĠĠĠĠĠ Ġval Ġsoft Ban Message Log Ġ= Ġget Soft Ban Message ( lang , Ġzone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġsoft Ban , Ġtrue , Ġmember . user . is Bot , Ġsoft B anning Message Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġsoft B anning Message ?. edit Message ( soft Ban Message DM )?. override ( true )?. queue () ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġguild . get And Verify Log Channel ByType ( dao Manager , ĠLog Channel Type . SOFT _ BAN ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsend Embed ( dao Manager . embed Disabled Wrapper , Ġchannel , Ġsoft Ban Message Log ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Mute ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer , Ġduration : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj da Ġ= Ġmember . j da ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . 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 , Ġmember . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġlang Ġ= Ġget Language ( dao Manager , Ġmember . id Long , Ġguild . id Long ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmute Ġ= ĠM ute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj da . self User . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp un ish ment . reason , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration ?. times ( 1 0 0 0 )?. plus ( System . currentTimeMillis ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdao Manager . mute Wrapper . set Mute ( mute ) ĊĠĠĠĠĠĠĠ Ġval Ġmute Role Ġ= Ġguild . get And Verify Role ByType ( dao Manager , ĠRole Type . M UTE , Ġtrue ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġguild . add Role To Member ( member , Ġmute Role ). reason (" muted "). await () ĊĊĠĠĠĠĠĠĠ Ġval Ġmute Message DM Ġ= Ġget Mute Message ( lang , Ġpriv Zone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġmute ) ĊĠĠĠĠĠĠĠ Ġval Ġpc Ġ= Ġmember . user . open Private Channel (). await OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġmut ed Message Ġ= Ġpc ?. sendMessage ( mute Message DM )?. await OrNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġmute Message Log Ġ= Ġget Mute Message ( lang , Ġzone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġmute , Ġtrue , Ġmember . user . is Bot , Ġmut ed Message Ġ!= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlc Type Ġ= Ġif Ġ( duration Ġ== Ġnull ) ĠLog Channel Type . PER MAN ENT _ M UTE Ġelse ĠLog Channel Type . TEMP _ M UTE ĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġguild . get And Verify Log Channel ByType ( dao Manager , Ġlc Type ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsend Embed ( dao Manager . embed Disabled Wrapper , Ġchannel , Ġmute Message Log ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Kick ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpc Ġ= Ġmember . user . open Private Channel (). await OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġj da Ġ= Ġmember . j da ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . dao Manager ĊĠĠĠĠĠĠĠ Ġval Ġlang Ġ= Ġget Language ( dao Manager , Ġmember . id Long , Ġguild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġkick ing Ġ= Ġi 1 8 n . get Translation ( lang , Ġ" message . kick ing ") ĊĠĠĠĠĠĠĠ Ġval Ġkick ing Message Ġ= Ġpc ?. sendMessage ( kick ing )?. await OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġzone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġpriv Zone Id Ġ= Ġget Zone Id ( dao Manager , Ġguild . id Long , Ġmember . id Long ) ĊĊĠĠĠĠĠĠĠ Ġval Ġkick Ġ= ĠK ick ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj da . self User . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp un ish ment . reason ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdao Manager . kick Wrapper . add Kick ( kick ) ĊĠĠĠĠĠĠĠ Ġval Ġex Ġ= Ġmember . kick ( pun ish ment . reason ). await EX () ĊĠĠĠĠĠĠĠ Ġif Ġ( ex Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfailed Ġ= Ġi 1 8 n . get Translation ( lang , Ġ" message . kick ing . failed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkick ing Message ?. edit Message ( failed )?. queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġkick Message DM Ġ= Ġget Kick Message ( lang , Ġpriv Zone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġkick ) ĊĠĠĠĠĠĠĠ Ġval Ġkick Message Log Ġ= Ġget Kick Message ( lang , Ġzone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġkick , Ġtrue , Ġmember . user . is Bot , Ġkick ing Message Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġkick ing Message ?. edit Message ( kick Message DM )?. override ( true )?. queue () ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġguild . get And Verify Log Channel ByType ( dao Manager , ĠLog Channel Type . K ICK ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsend Embed ( dao Manager . embed Disabled Wrapper , Ġchannel , Ġkick Message Log ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġapply Warn ( member : ĠMember , Ġp un ish ment : ĠP un ish ment , Ġcontainer : ĠContainer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj da Ġ= Ġmember . j da ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġmember . guild ĊĠĠĠĠĠĠĠ Ġval Ġdao Manager Ġ= Ġcontainer . 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 , Ġmember . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġlang Ġ= Ġget Language ( dao Manager , Ġmember . id Long , Ġguild . id Long ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġwarn Ġ= ĠW arn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġguild . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj da . self User . id Long , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp un ish ment . reason ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdao Manager . warn Wrapper . add Warn ( warn ) ĊĊĠĠĠĠĠĠĠ Ġval Ġwarn Message DM Ġ= Ġget Warn Message ( lang , Ġpriv Zone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġwarn ) ĊĠĠĠĠĠĠĠ Ġval Ġpc Ġ= Ġmember . user . open Private Channel (). await OrNull () ĊĠĠĠĠĠĠĠ Ġval Ġkick ed Message Ġ= Ġpc ?. sendMessage ( warn Message DM )?. await OrNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġwarn Message Log Ġ= Ġget Warn Message ( lang , Ġzone Id , Ġguild , Ġmember . user , Ġj da . self User , Ġwarn , Ġtrue , Ġmember . user . is Bot , Ġkick ed Message Ġ!= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= Ġguild . get And Verify Log Channel ByType ( dao Manager , ĠLog Channel Type . K ICK ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġsend Embed ( dao Manager . embed Disabled Wrapper , Ġchannel , Ġwarn Message Log ) ĊĠĠĠ Ġ} Ċ } Ċ