package Ġnet . developer den . dev den bot . listener Ċ Ċ import Ġclub . min n ced . j da . reactor . on Message Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow . filter Ċ import Ġkotlinx . coroutines . flow . first OrNull Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . reactive . as Flow Ċ import Ġnet . developer den . dev den bot . data . Stats Users Ċ import Ġnet . developer den . dev den bot . discord . BU MP _ NOTIFICATION S _ ROLE _ ID Ċ import Ġnet . developer den . dev den bot . extensions . await Ċ import Ġnet . developer den . dev den bot . inject . Used Ċ import Ġnet . developer den . dev den bot . util . handle Each In Ċ import Ġnet . developer den . dev den bot . util . listen Flow Ċ import Ġnet . developer den . dev den bot . util . log Ċ import Ġnet . developer den . dev den bot . util . scope Ċ import Ġnet . dv 8 tion . j da . api . J DA Ċ import Ġnet . dv 8 tion . j da . api . events . message . guild . Guild Message Received Event Ċ import Ġorg . jetbrains . ex posed . sql . transactions . experimental . new Sus pended Transaction Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Used Ċ class ĠBump Notification Listener Ġ: ĠEvent Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDIS BOARD _ BOT _ ID Ġ= Ġ 3 0 2 0 5 0 8 7 2 3 8 3 2 4 2 2 4 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠBU MP _ CO OL DOWN Ġ= ĠTimeUnit . HOUR S . to Millis ( 2 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġby Ġlog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġon Guild Message Received ( event : ĠGuild Message Received Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . message . content Raw Ġ!= Ġ"! d Ġbump ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnext Dis board Messages Ġ= Ġevent . channel . on Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Flow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . author . id Long Ġ== ĠDIS BOARD _ BOT _ ID Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . message . embed s Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġnext Dis board Message Ġ= Ġnext Dis board Messages . first OrNull () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( next Dis board Message . description ?. contains (": thumb sup :") Ġ!= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠStats Users . get ( event . author . id Long ) ĊĊĠĠĠĠĠĠĠ Ġuser . set Bu mps ( user . bump s Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġlog . info Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Increase d Ġbump Ġstat Ġfor Ġuser Ġ${ event . author . name } Ġfrom Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser . bump s Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġto Ġ${ user . bump s } ." ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdelay ( BU MP _ CO OL DOWN ) ĊĠĠĠĠĠĠĠ Ġval Ġbump Notification Role Ġ= Ġrequire NotNull ( event . j da . get Role ById ( BU MP _ NOTIFICATION S _ ROLE _ ID )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bump ĠNotifications Ġrole Ġnot Ġfound " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlog . trace Ġ{ Ġ" Sending Ġbump Ġready Ġnotification Ġto Ġusers Ġwith Ġthe Ġbump Ġnotification Ġrole " Ġ} ĊĊĠĠĠĠĠĠĠ Ġevent . channel . sendMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ bump Notification Role . as Mention }, Ġthe Ġserver Ġis Ġready Ġto Ġbe Ġbump ed ! Ġ** ! d Ġbump ** " ĊĠĠĠĠĠĠĠ Ġ). await () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( j da : ĠJ DA ) Ġ{ ĊĠĠĠĠĠĠĠ Ġj da . listen Flow < Guild Message Received Event >(). handle Each In ( this :: on Guild Message Received ) ĊĠĠĠ Ġ} Ċ } Ċ