package Ġui . commands Ċ Ċ import Ġdomain . models . Event Ċ import Ġdomain . use cases . Save Reminder Hour Ċ import Ġdomain . use cases . SendMessage Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠRem inder Hour ( sendMessage : ĠSend Message , Ġprivate Ġval Ġsave Reminder Hour : ĠSave Reminder Hour ) ĊĠĠĠ Ġ: ĠCommand ( sendMessage ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSTART _ KEYWORD Ġ= Ġ" eb ! reminder Hour " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEND _ RESPONSE Ġ= Ġ" Ok ! ĠI 'll Ġsend Ġrem inders Ġat " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ FORMAT _ RESPONSE Ġ= Ġ" The Ġtime Ġformat Ġhas Ġto Ġbe Ġ 2 3 : 5 9 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠERROR _ SA V ING _ RESPONSE Ġ= Ġ" An Ġerror Ġhappened Ġtrying Ġto Ġsave Ġthe Ġreminder Ġhour " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠHO UR _ REGEX _ PATTERN Ġ= Ġ"^ ([ 0 1 ]\\ d | 2 [ 0 - 3 ]): [ 0 - 5 ]\\ d $" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Logger (): ĠLogger Ġ= ĠLoggerFactory . getLogger ( Reminder Hour :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Event ( event : ĠEvent ) Ġ= Ġthrow ĠNotImplementedError () ĊĊĠĠĠ Ġfun Ġprocess Event ( event : ĠEvent , Ġon Config Changed : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġraw Reminder Hour Ġ= Ġevent . message . substring ( START _ KEYWORD . length , Ġevent . message . length ). trim () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( raw Reminder Hour . matches ( Regex ( HOUR _ REGEX _ PATTERN ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Reminder Hour . execute ( event . server Id , Ġraw Reminder Hour ). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Config Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Response ( event . channel , Ġ"$ END _ RESPONSE Ġ$ raw Reminder Hour ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Response ( event . channel , ĠERROR _ SA V ING _ RESPONSE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Response ( event . channel , ĠERROR _ FORMAT _ RESPONSE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }