package Ġcom . co alesce . bot . command . handlers Ċ Ċ import Ġcom . co alesce . bot . COMMAND _ PREFIX Ċ import Ġcom . co alesce . bot . command .* Ċ import Ġcom . co alesce . bot . utilities . Embed d ables Ċ import Ġcom . co alesce . bot . utilities . emb Color Ċ import Ġcom . co alesce . bot . utilities . emb Description Ċ import Ġcom . co alesce . bot . utilities . emb Title Ċ import Ġjava . awt . Color Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Command (" Help ", Ġ"? Ġh lp ") Ċ @ User Cooldown ( 3 0 L ) Ċ class ĠHelp : ĠEmbed d ables Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpages Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġload Help ( handler : ĠListener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbuilder Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġadd Line ( str : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( builder . length Ġ+ Ġstr . length Ġ> Ġ 1 0 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpages . add ( builder . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ln ( str ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . commands . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalias Ġ= Ġit . command Info . aliases [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġname ( method : ĠUs able Method ) Ġ= Ġ"$ COMMAND _ PREFIX ${ alias . toLowerCase ()} Ġ" Ġ+ Ġmethod . info ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . bot Command . methods . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusage String Ġ= Ġname ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= Ġit . usage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Line (" `$ usage String `: Ġ$ desc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* it . bot Command . sub Commands . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . methods . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusage String Ġ= Ġname ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= Ġit . usage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Line (" `$ usage String `: Ġ$ desc ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpages . add ( builder . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Command Alias (" G ives Ġyou Ġa Ġlist Ġof Ġcommands .") ĊĠĠĠ Ġfun Ġexecute ( context : ĠCommand Context , Ġpage : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( page Ġ! in Ġ 1 .. pages . size ) Ġthrow ĠArgs Exception (" Invalid Ġpage !") ĊĊĠĠĠĠĠĠĠ Ġcontext . use P Ch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend ( embed (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemb Title Ġ= Ġ" Command ĠList ĠPage Ġ$ page " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemb Color Ġ= ĠColor ( 0 x BE 5 8 B 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemb Description Ġ= Ġpages [ page Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ+ Ġ 1 Ġ> Ġpages . size ) Ġset Footer (" Next Ġpage : Ġ! help Ġ${ page Ġ+ Ġ 1 }", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġcontext . author ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" I 've Ġsent Ġyou Ġa Ġlist Ġof Ġcommands Ġin Ġyour Ġprivate Ġmessages !", Ġdelete After Ġ= Ġ 1 0 L Ġto ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }