package Ġju ke bot . listeners Ċ Ċ import Ġio . sentry . S entry Ċ import Ġju ke bot . Database Ċ import Ġju ke bot . Ju ke Bot Ċ import Ġju ke bot . framework . Command Scanner Ċ import Ġju ke bot . framework . Context Ċ import Ġju ke bot . utils . Helpers Ċ import Ġju ke bot . utils . separate Ċ import Ġnet . dv 8 tion . j da . api . events . Generic Event Ċ import Ġnet . dv 8 tion . j da . api . events . message . guild . Guild Message Received Event Ċ import Ġnet . dv 8 tion . j da . api . hooks . EventListener Ċ import Ġnet . dv 8 tion . j da . api . hooks . Listener Adapter Ċ Ċ class ĠCommand Handler Ġ: ĠEvent Listener Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠJ uke Bot . log . info ("${ commands . size } Ġcommands Ġin Ġregistry ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Event ( event : ĠGeneric Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event Ġis ĠGuild Message Received Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Guild Message Received ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Guild Message Received ( e : ĠGuild Message Received Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( e . author . is Bot Ġ|| Ġe . is Webhook Message Ġ|| Ġ! Helpers . can Send To ( e . channel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| ĠDatabase . getIs Blocked ( e . author . id Long )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġguild Prefix Ġ= ĠDatabase . get Prefix ( e . guild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġwas Mention ed Ġ= Ġe . message . content Raw . startsWith ("< @ ${ e . guild . self Member . id }> ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġe . message . content Raw . startsWith ("< @ ! ${ e . guild . self Member . id }> ") ĊĠĠĠĠĠĠĠ Ġval Ġtrigger Length Ġ= Ġif Ġ( was Mention ed ) Ġe . guild . self Member . as Mention . length Ġ+ Ġ 1 Ġelse Ġguild Prefix . length ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! e . message . content Raw . startsWith ( guild Prefix ) Ġ&& Ġ! was Mention ed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( was Mention ed Ġ&& Ġ! e . message . content Raw . contains (" Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġe . message . content Raw . substring ( trigger Length ). trim () ĊĠĠĠĠĠĠĠ Ġval Ġ( cmd Str , Ġargs ) Ġ= Ġcontent . split ("\\ s +". to Regex ()). separate () ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġcmd Str . toLowerCase () ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Args Ġ= Ġif Ġ( content . length Ġ>= Ġcommand . length ) Ġcontent . substring ( command . length ). trim () Ġelse Ġ"" ĊĊĠĠĠĠĠĠĠ Ġval Ġfound Command Ġ= Ġcommands [ command ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġcommands . values . first OrNull Ġ{ Ġit . properties . aliases . contains ( command ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( found Command . properties . developer Only Ġ&& ĠJ uke Bot . bot OwnerId Ġ!= Ġe . author . id Long ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfound Command . run Checks ( Context ( e , Ġargs , Ġoriginal Args , Ġguild Prefix )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS entry . capture ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommands Ġ= ĠCommand Scanner (" ju ke bot . commands "). scan (). to Mutable Map () ĊĠĠĠ Ġ} Ċ } Ċ