package Ġju ke bot . framework Ċ Ċ import Ġju ke bot . Database Ċ import Ġju ke bot . Ju ke Bot Ċ import Ġju ke bot . audio . Audio Handler Ċ import Ġju ke bot . utils . Helpers Ċ import Ġnet . dv 8 tion . j da . api . Embed Builder Ċ import Ġnet . dv 8 tion . j da . api . entities . Message Ċ import Ġnet . dv 8 tion . j da . api . events . message . guild . Guild Message Received Event Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠContext ( val Ġevent : ĠGuild Message Received Event , Ġval Ġargs : ĠList < String >, Ġval Ġoriginal Args : ĠString , Ġval Ġprefix : ĠString ) Ġ{ ĊĊĠĠĠ Ġval Ġarg String : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġargs . join ToString (" Ġ") ĊĊĠĠĠ Ġval Ġmessage Ġ= Ġevent . message ĊĠĠĠ Ġval Ġmember Ġ= Ġevent . member !! ĊĠĠĠ Ġval Ġauthor Ġ= Ġevent . author ĊĠĠĠ Ġval Ġchannel Ġ= Ġevent . channel ĊĠĠĠ Ġval Ġguild Ġ= Ġevent . guild ĊĠĠĠ Ġval Ġj da Ġ= Ġevent . j da ĊĠĠĠ Ġval Ġdon or Tier : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( author . id Long Ġ== ĠJ uke Bot . bot OwnerId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInteger . MAX _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Database . getIs Prem ium Server ( guild . id Long )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDatabase . get Tier ( author . id Long ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġval Ġembed Color : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠDatabase . get Colour ( guild . id Long ) ĊĊĠĠĠ Ġfun Ġget Audio Player (): ĠAudio Handler Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJ uke Bot . getPlayer ( guild . id Long ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġensure Mut ual Voice Channel (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġmember . guild . audio Manager ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( member . voice State !!. channel Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġmanager . connected Channel Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġmanager . connected Channel !!. id Long Ġ== Ġmember . voice State !!. channel !!. id Long ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis DJ ( allow L one VC : ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Dj Role : ĠLong ? Ġ= ĠDatabase . get Dj Role ( guild . id Long ) ĊĠĠĠĠĠĠĠ Ġval Ġrole Match Ġ= Ġif Ġ( custom Dj Role Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Dj Role Ġ== Ġguild . public Role . id Long Ġ|| Ġmember . roles . any Ġ{ Ġit . id Long Ġ== Ġcustom Dj Role Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmember . roles . any Ġ{ Ġit . name . equals (" dj ", Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġis E lev ated Ġ= Ġmember . is Owner Ġ|| ĠJ uke Bot . bot OwnerId Ġ== Ġauthor . id Long Ġ|| Ġrole Match ĊĊĠĠĠĠĠĠĠ Ġif Ġ( allow L one VC Ġ&& Ġ! is E lev ated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmember . voice State !!. channel Ġ!= Ġnull Ġ&& Ġmember . voice State !!. channel !!. members . filter Ġ{ Ġ! it . user . is Bot Ġ}. size Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġis E lev ated ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreact ( emoji : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmessage . add Reaction ( emoji ). queue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġembed ( title : ĠString , Ġdescription : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġembed Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Description ( description ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġembed ( block : ĠEmbed Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Helpers . can Send To ( channel )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġembed Ġ= ĠEmbed Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( embed Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( block ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġevent . channel . sendMessage ( embed ). queue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprompt ( title : ĠString , Ġdescription : ĠString , Ġcb : Ġ( Message , ĠString ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Helpers . can Send To ( channel )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġembed Ġ= ĠEmbed Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( embed Color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġevent . channel . sendMessage ( embed ). queue Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ uke Bot . wait er . waitFor Selection ( author . id Long , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb ( m , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprompt ( delay : ĠInt , Ġcb : Ġ( String ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠJ uke Bot . wait er . waitFor Selection ( author . id Long , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb ( it ) ĊĠĠĠĠĠĠĠ Ġ}, Ġdelay , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} Ċ Ċ }