package Ġdev . aug u . n ino . commands . mod eration Ċ Ċ import Ġdev . aug u . n ino . but ter fly . command . Command Context Ċ import Ġdev . aug u . n ino . common . entities . Action Ċ import Ġdev . aug u . n ino . common . entities . Mod eration Command Ċ import Ġdev . aug u . n ino . common . entities . cases . Ban Case Ċ import Ġdev . aug u . n ino . common . entities . cases . Mute Case Ċ import Ġdev . aug u . n ino . common . util . format Duration Long Ċ import Ġdev . aug u . n ino . common . util . format Duration Short Ċ import Ġdev . aug u . n ino . common . util . parse Duration Ċ import Ġdev . aug u . n ino . services . cases . IC ase Service Ċ import Ġdev . aug u . n ino . services . mod eration . log . IM od eration Log Service Ċ import Ġdev . aug u . n ino . services . scheduler . IS cheduler Service Ċ import Ġdev . aug u . n ino . services . scheduler . job . Un ban Scheduler Job Ċ import Ġdev . aug u . n ino . services . scheduler . job . Un mute Scheduler Job Ċ import Ġjava . time . Duration Ċ import Ġjava . time . Instant Ċ import Ġnet . dv 8 tion . j da . api . Permission Ċ Ċ class ĠUpdate Time Command ( private Ġval Ġcase Service : ĠI Case Service , Ġprivate Ġval Ġlog Service : ĠI Mod eration Log Service , Ġprivate Ġval Ġscheduler Service : ĠIS cheduler Service ): ĠMod eration Command ( ĊĠĠĠ Ġ" update time ", ĊĠĠĠ Ġ" Updates Ġthe Ġtime Ġof Ġa Ġcase Ġwith Ġa Ġtemporary Ġaction ", ĊĊĠĠĠ Ġuser Permissions Ġ= ĠPermission . getRaw ( Permission . K ICK _ MEMBER S ), ĊĠĠĠ Ġbot Permissions Ġ= ĠPermission . getRaw ( Permission . MESSAGE _ MANAGE ) Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( ctx : ĠCommand Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġextract Arguments ( ctx . args ) ĊĠĠĠĠĠĠĠ Ġif Ġ( args Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command No Args ", Ġmap Of (" prefix " Ġto Ġctx . prefix )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( args . case ID Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command Invalid Case ", Ġmap Of (" case ID " Ġto Ġctx . args [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( args . duration Ġ== Ġnull Ġ|| Ġ( args . duration Ġ< ĠDuration . of Seconds ( 1 5 ) Ġ|| Ġargs . duration Ġ> ĠDuration . of Days ( 7 ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command Invalid Duration ", Ġmap Of (" case ID " Ġto Ġctx . args [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcase Ġ= Ġcase Service . get Case ( args . case ID , Ġctx . guild !!. id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( case Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command No Case Found ", Ġmap Of (" case ID " Ġto Ġctx . args [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( case Ġ! is ĠB an Case Ġ&& Ġcase Ġ! is ĠM ute Case ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command Case Not Temp ", Ġmap Of (" case ID " Ġto Ġctx . args [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( case . resolved ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command Case Already Resolved ", Ġmap Of (" case ID " Ġto Ġctx . args [ 0 ])) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( case ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠB an Case Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcase . time Ġ= Ġargs . duration . to Millis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler Service . stop Scheduled Job ( Action . UN BAN , Ġcase . target UserId , Ġcase . guild Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler Service . schedule Job ( Un ban Scheduler Job ( startTime Ġ= Ġcase . createdAt , Ġduration Ġ= Ġcase . time !! , Ġtarget UserId Ġ= Ġcase . target UserId , Ġguild Id Ġ= Ġcase . guild Id , Ġreason Ġ= Ġ" Time 's Ġup ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠM ute Case Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcase . time Ġ= Ġargs . duration . to Millis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler Service . stop Scheduled Job ( Action . UN M UTE , Ġcase . target UserId , Ġcase . guild Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscheduler Service . schedule Job ( Un mute Scheduler Job ( startTime Ġ= Ġcase . createdAt , Ġduration Ġ= Ġcase . time !! , Ġtarget UserId Ġ= Ġcase . target UserId , Ġguild Id Ġ= Ġcase . guild Id , Ġreason Ġ= Ġ" Time 's Ġup ! ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcase . last Changed At Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠ Ġcase . last Mod erator Id Ġ= Ġctx . author . id ĊĠĠĠĠĠĠĠ Ġcase Service . update Case ( case ) ĊĠĠĠĠĠĠĠ Ġlog Service . update Log ( case ) ĊĊĠĠĠĠĠĠĠ Ġval Ġremaining Duration Ġ= Ġargs . duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. minus Millis ( Instant . now (). to Epoch Milli ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. plus Millis ( case . createdAt . to Epoch Milli ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. coerce At Least ( Duration . ZERO ) ĊĊĠĠĠĠĠĠĠ Ġctx . reply Translate (" update time Command Success ", Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" remaining Duration " Ġto Ġformat Duration Short ( remaining Duration ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" duration " Ġto Ġformat Duration Long ( args . duration ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" case ID " Ġto Ġargs . case ID . toString ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠArguments ( val Ġcase ID : ĠInt ?, Ġval Ġduration : ĠDuration ?) ĊĊĠĠĠ Ġprivate Ġfun Ġextract Arguments ( args : ĠArray < String >): ĠArguments ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( args . isEmpty ()) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġcase ID Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . parseInt ( args [ 0 ]) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġparse Duration ( args . drop ( 1 ). join ToString (" Ġ"). trim ()) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠArguments ( case ID , Ġduration ) ĊĠĠĠ Ġ} Ċ } Ċ