package Ġdev . k ord . core . gateway . handler Ċ Ċ import Ġdev . k ord . cache . api . Data Cache Ċ import Ġdev . k ord . core . K ord Ċ import Ġdev . k ord . core . gateway . Shard Event Ċ import Ġio . ktor . util .* Ċ import Ġkotlinx . coroutines . Supervisor Job Ċ import Ġkotlinx . coroutines . job Ċ import Ġmu . Kotlin Logging Ċ import Ġkotlin . coroutines . Coroutine Context Ċ import Ġdev . k ord . core . event . Event Ġas ĠCore Event Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{ Ġ} Ċ Ċ @ Suppress (" EXPERIMENT AL _ API _ USAGE ") Ċ class ĠDefault Gateway Event Interceptor ( ĊĠĠĠ Ġcache : ĠData Cache , ĊĠĠĠ Ġprivate Ġval Ġevent Scope : Ġ(( Shard Event , ĠK ord ) Ġ-> ĠCor outine Context )? Ġ= Ġnull Ċ ) Ġ: ĠGateway Event Interceptor Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlisteners Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠMessage EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠChannel EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠThread EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠGuild EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠLife Cycle EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠUser EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠVoice EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠWeb hook EventHandler ( cache ), ĊĠĠĠĠĠĠĠ ĠInteraction EventHandler ( cache ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġhandle ( event : ĠSh ard Event , Ġk ord : ĠK ord ): ĠCore Event ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrun Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( listener Ġin Ġlisteners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcore Event Ġ= Ġlistener . handle ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . shard , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk ord , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( event Scope ?. invoke ( event , Ġk ord ) Ġ?: Ġk ord . coroutine Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ ĠSuper visor Job ( k ord . coroutine Context . job ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( core Event Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcore Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ( it ) ĊĠĠĠĠĠĠĠ Ġ}. get OrNull () ĊĠĠĠ Ġ} Ċ }