package Ġs ib yl . module . rem inders Ċ Ċ import Ġcom . github . aj alt . cli kt . parameters . arguments .* Ċ import Ġmu . Kotlin Logging Ċ import Ġorg . joda . time . LocalDateTime Ċ import Ġs ib yl . commands . S ib yl Command Ċ import Ġs ib yl . db . Rem inders Ċ Ċ class ĠRem ind In Command ( private Ġval Ġrem inders Module : ĠRem inders Module ) Ġ: ĠS ib yl Command ( ĊĠĠĠ Ġname Ġ= Ġ" in ", ĊĠĠĠ Ġhelp Ġ= Ġ" rem inds Ġyou Ġafter Ġa Ġspecified Ġduration Ġin Ġthe Ġsame Ġchannel " Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġperiod Ġby Ġargument (" PERIOD "). convert Ġ{ Ġstring Ġ-> ĊĠĠĠĠĠĠĠ ĠTime Util . parse Period ( string ) ĊĠĠĠ Ġ}. validate Ġ{ Ġperiod Ġ-> ĊĠĠĠĠĠĠĠ Ġrequire ( period . to Standard Seconds (). seconds Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" duration Ġmust Ġbe Ġpositive " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġmessage Ġby Ġargument (" MESSAGE "). multiple (). transform All Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠ Ġargs . join ToString (" Ġ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġrem inders Module . db . rem inders Queries . select Max Id (). execute As One OrNull () Ġ?: Ġ 0 Ġ// ĠTODO : Ġremove Ġhack Ġwhen ĠSERIAL Ġis Ġfixed ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget DateTime Ġ= ĠLocalDateTime . now () Ġ+ Ġperiod ĊĠĠĠĠĠĠĠ Ġrem inders Module . db . rem inders Queries . insert ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid + 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġcause Message . username , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuserid Ġ= Ġcause Message . userid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgateway Ġ= Ġcause Message . gateway , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= Ġtarget DateTime , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested At Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġecho (" scheduled Ġreminder Ġat Ġ$ target DateTime ") ĊĊĠĠĠ Ġ} Ċ Ċ }