package Ġapp Ċ Ċ import Ġcom . github . the h oly w aff le . teams peak 3 . api . event .* Ċ import Ġmodules . Abstract Module Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj acob Ġon Ġ 2 0 1 7 - 0 6 - 1 0 Ġ( YYYY - MM - DD ). Ċ Ġ*/ Ċ class ĠEventHandler : ĠTS 3 Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġts Connection : ĠI Ts Connection ĊĠĠĠ Ġprivate Ġval Ġmodules : ĠMutable Collection < modules . Abstract Module > ĊĠĠĠ Ġprivate Ġval Ġcommand Prefixes : Ġkotlin . collections . HashMap < String , ĠAbstract Module > ĊĊĠĠĠ Ġconstructor ( ts Connection : ĠI Ts Connection ): Ġsuper () Ġ{ ĊĠĠĠĠĠĠĠ Ġmodules Ġ= Ġmutable ListOf < modules . Abstract Module >() ĊĠĠĠĠĠĠĠ Ġcommand Prefixes Ġ= Ġhash Map Of < String , Ġmodules . Abstract Module >() ĊĠĠĠĠĠĠĠ Ġthis . ts Connection Ġ= Ġts Connection ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Module ( module : Ġmodules . Abstract Module ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodules . add ( module ) ĊĠĠĠĠĠĠĠ Ġmodule . Command Prefixes . forEach Ġ{ Ġcommand Prefixes . put ( it , Ġmodule ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Text Message ( e : ĠText Message Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Message Ġreceived : Ġ${ e . message }") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( e . message Ġ== Ġ" ping ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage (" p ong ") ĊĠĠĠĠĠĠĠ Ġval Ġsender Ġ= Ġ( object : ĠIS ender { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġunique Id : ĠString Ġ= Ġe . inv oker UniqueId ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġif ( e . message . first () Ġ== Ġ' !') Ġ{ Ġ// Ġif Ġ! , Ġthen Ġit 's Ġa Ġcommand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġe . message . trim Start (' !') // . trim End (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message Ġ== Ġ" exit ") Ġts Connection . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message . contains (' Ġ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . substring ( 0 , Ġmessage . indexOf (' Ġ')) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuffix Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message . length Ġ!= Ġprefix . length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage . substring ( prefix . length + 1 , Ġmessage . length ). trim (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Prefix : Ġ$ prefix ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Suffix : Ġ$ suffix ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġ( object : ĠICommand Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprefix : ĠString Ġ= Ġprefix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsuffix : ĠString Ġ= Ġsuffix ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsender : ĠIS ender Ġ= Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand Prefixes [ prefix ]?. on Command ( command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ( object : ĠI Message Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġmessage : ĠString Ġ= Ġe . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġsender : ĠIS ender Ġ= Ġsender ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules . forEach Ġ{ Ġmodule Ġ-> Ġmodule . on Message ( message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Client Join ( e : ĠClient Join Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjoined Ġ= Ġ( object : ĠI Client Joined Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġchannel Id : ĠInt Ġ= Ġe . client Target Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval ĠclientId : ĠInt Ġ= Ġe . clientId ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmodules . forEach Ġ{ Ġmodule Ġ-> Ġmodule . on Client Join ( joined )} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Client Moved ( e : ĠClient Moved Event ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Client Leave ( e : ĠClient Leave Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Channel Deleted ( e : ĠChannel Deleted Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Channel Moved ( e : ĠChannel Moved Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Privilege Key Used ( e : ĠPriv ilege Key Used Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Channel Edit ( e : ĠChannel Edited Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Channel Description Changed ( e : ĠChannel Description Edited Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Server Edit ( e : ĠServer Edited Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Channel Create ( e : ĠChannel Create Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Channel Password Changed ( e : ĠChannel Password Changed Event ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") ĊĠĠĠ Ġ} Ċ }