package Ġme . me li jn . me lij nb ot . commands . music Ċ Ċ import Ġcom . sed mell uq . discord . lav ap layer . track . Audio Track Ċ import Ġme . me li jn . me lij nb ot . database . message . Mod ular Message Ċ import Ġme . me li jn . me lij nb ot . internals . command . Abstract Command Ċ import Ġme . me li jn . me lij nb ot . internals . command . Command Category Ċ import Ġme . me li jn . me lij nb ot . internals . command . IC ommand Context Ċ import Ġme . me li jn . me lij nb ot . internals . embed . Embed der Ċ import Ġme . me li jn . me lij nb ot . internals . utils . StringUtils Ċ import Ġme . me li jn . me lij nb ot . internals . utils . get Duration String Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send In Guild Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Mel ijn Missing Channel Permission Message Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Pagination Mod ular Rsp Ċ import Ġme . me li jn . me lij nb ot . internals . utils . message . send Rsp Ċ import Ġme . me li jn . me lij nb ot . internals . utils . with Safe Variable Ċ import Ġme . me li jn . me lij nb ot . internals . utils . with Variable Ċ import Ġnet . dv 8 tion . j da . api . Permission Ċ Ċ class ĠQueue Command Ġ: ĠAbstract Command (" command . queue ") Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 8 2 ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" queue " ĊĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" q ", Ġ" list ", Ġ" song list ", Ġ" songs ", Ġ" tracks ") ĊĠĠĠĠĠĠĠ Ġdiscord Channel Permissions Ġ= ĠarrayOf ( Permission . MESSAGE _ EMB ED _ LIN KS , ĠPermission . MESSAGE _ HISTORY ) ĊĠĠĠĠĠĠĠ Ġcommand Category Ġ= ĠCommand Category . M US IC ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( context : ĠICommand Context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrack Manager Ġ= Ġcontext . get Guild Music Player (). guild Track Manager ĊĊĊĠĠĠĠĠĠĠ Ġvar Ġdescription Ġ= Ġ"" ĊĊĊĠĠĠĠĠĠĠ Ġval Ġc Track : ĠAudio Track ? Ġ= Ġtrack Manager . i Player . playing Track ĊĠĠĠĠĠĠĠ Ġif Ġ( c Track Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġno Song Playing Ġ= Ġcontext . get Translation (" message . music . no tracks ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context , Ġno Song Playing ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġtotal Duration Ġ= Ġc Track . duration ĊĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġcontext . get Translation ( if Ġ( track Manager . i Player . paused ) Ġ" paused " Ġelse Ġ" playing ") ĊĠĠĠĠĠĠĠ Ġdescription Ġ+= Ġ" [$ status ]( ${ c Track . info . uri }) Ġ- Ġ** % title % ** Ġ`[ ${ get Duration String ( track Manager . i Player . track Position )} Ġ/ Ġ${ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Duration String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Track . duration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ]` " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Variable (" title ", Ġc Track . info . title ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsafe Tracks Ġ= Ġtrack Manager . tracks ĊĠĠĠĠĠĠĠ Ġsafe Tracks . indexed ForEach Ġ{ Ġindex , Ġtrack Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Duration Ġ+= Ġtrack . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ+= Ġ"\ n [# ${ index Ġ+ Ġ 1 } ]( ${ track . info . uri }) Ġ- Ġ% title % Ġ`[ ${ get Duration String ( track . duration )} ]` " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Safe Variable (" title ", Ġtrack . info . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . send In Guild ( context , Ġshould Send Ġ= Ġtrue , Ġextra Ġ= Ġ( track . duration . toString () Ġ+ Ġ"" Ġ+ Ġtrack . info )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġcontext . get Translation ("$ root . title ") ĊĊĠĠĠĠĠĠĠ Ġdescription Ġ+= Ġcontext . get Translation ("$ root . fake footer ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" duration ", Ġget Duration String ( total Duration Ġ- Ġtrack Manager . i Player . track Position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" amount ", Ġ( safe Tracks . size Ġ+ Ġ 1 ). toString ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġfooter Pagination Ġ= Ġcontext . get Translation (" message . pagination ") ĊĊĠĠĠĠĠĠĠ Ġval Ġmodular Messages Ġ= Ġmutable ListOf < Mod ular Message >() ĊĊĠĠĠĠĠĠĠ Ġval Ġqueue Parts Ġ= ĠStringUtils . split Message ( description ) ĊĠĠĠĠĠĠĠ Ġval Ġe b Ġ= ĠEmbed der ( context ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġqueue ) Ġin Ġqueue Parts . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe b . setTitle ( if Ġ( index Ġ== Ġ 0 ) Ġtitle Ġelse Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe b . setDescription ( queue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( queue Parts . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe b . set Footer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Pagination ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" page ", Ġindex Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Variable (" pages ", Ġqueue Parts . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodular Messages . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex , ĠMod ular Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġembed Ġ= Ġe b . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( mod ular Messages . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context . self Member . has Permission ( context . text Channel , ĠPermission . MESSAGE _ ADD _ RE ACTION )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Pagination Mod ular Rsp ( context , Ġmodular Messages , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Mel ijn Missing Channel Permission Message ( context , ĠlistOf ( Permission . MESSAGE _ ADD _ RE ACTION )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend Rsp ( context . text Channel , Ġcontext , Ġmodular Messages . first ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }