package Ġspace . yar os lav . family bot . exec utors . event based Ċ Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . telegram . telegram bots . meta . bots . Abs Sender Ċ import Ġspace . yar os lav . family bot . common . extensions . random Boolean Ċ import Ġspace . yar os lav . family bot . common . extensions . random Int Ċ import Ġspace . yar os lav . family bot . common . extensions . send Ċ import Ġspace . yar os lav . family bot . exec utors . Configurable Ċ import Ġspace . yar os lav . family bot . exec utors . Executor Ċ import Ġspace . yar os lav . family bot . models . router . Executor Context Ċ import Ġspace . yar os lav . family bot . models . router . Function Id Ċ import Ġspace . yar os lav . family bot . models . router . Priority Ċ import Ġspace . yar os lav . family bot . services . settings . Easy KeyValue Service Ċ import Ġspace . yar os lav . family bot . services . settings . R age Mode Ċ import Ġspace . yar os lav . family bot . services . settings . Talk ing Density Ċ import Ġspace . yar os lav . family bot . services . talk ing . Talk ing Service Ċ Ċ @ Component Ċ class ĠTalk ing Executor ( ĊĠĠĠ Ġprivate Ġval Ġtalking Service : ĠTalk ing Service , ĊĠĠĠ Ġprivate Ġval Ġeasy KeyValue Service : ĠEasy KeyValue Service Ċ ) Ġ: ĠExecutor , ĠConfigur able Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Function Id ( context : ĠExecutor Context ): ĠFunction Id Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is R age Mode Enabled ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFunction Id . R AGE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFunction Id . CH ATT ING ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpriority ( context : ĠExecutor Context ): ĠPriority Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is R age Mode Enabled ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPriority . HIGH ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPriority . RANDOM ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( context : ĠExecutor Context ): Ġsuspend Ġ( Abs Sender ) Ġ-> ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr age Mod Enabled Ġ= Ġis R age Mode Enabled ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( should Reply ( r age Mod Enabled , Ġcontext )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Text Ġ= Ġtalking Service . get Reply To User ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġmessage Ġ-> Ġif Ġ( r age Mod Enabled ) Ġr age Mode Format ( message ) Ġelse Ġmessage Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelay Ġ= Ġif Ġ( r age Mod Enabled . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 0 Ġto Ġ 2 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 Ġto Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . send ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply ToUpdate Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshould Type Before Send Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Delay Ġ= Ġdelay ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r age Mod Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecrement R age Mode Messages Amount ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcan Execute ( context : ĠExecutor Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis R age Mode Enabled ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis R age Mode Enabled ( context : ĠExecutor Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġeasy KeyValue Service . get ( R age Mode , Ġcontext . chat Key , ĠdefaultValue Ġ= Ġ 0 ) Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdecrement R age Mode Messages Amount ( context : ĠExecutor Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġeasy KeyValue Service . decrement ( R age Mode , Ġcontext . chat Key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshould Reply ( r age Mod Enabled : ĠBoolean , Ġcontext : ĠExecutor Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( r age Mod Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= Ġget Talk ing Density ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( density Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom Boolean ( density ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġr age Mode Format ( string : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= Ġstring ĊĠĠĠĠĠĠĠ Ġif Ġ( message . endsWith (" Ġ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage . drop Last ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage . uppercase () Ġ+ Ġ"! ". repeat ( random Int ( 2 , Ġ 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Talk ing Density ( context : ĠExecutor Context ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġeasy KeyValue Service . get ( Talk ing Density , Ġcontext . chat Key , Ġ 7 ) ĊĠĠĠ Ġ} Ċ } Ċ