package Ġxyz . gn ar bot . gn ar . commands . exec utors . music Ċ Ċ import Ġcom . sed mell uq . discord . lav ap layer . track . Audio Track Ċ import Ġxyz . gn ar bot . gn ar . commands .* Ċ import Ġxyz . gn ar bot . gn ar . music . Music Manager Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ Ċ @ Command ( ĊĠĠĠĠĠĠĠ Ġaliases Ġ= Ġ[" remove "], ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Remove Ġa Ġsong Ġfrom Ġthe Ġqueue .", ĊĠĠĠĠĠĠĠ Ġusage Ġ= Ġ"( first | last | all | start .. end | # )" Ċ ) Ċ @ Bot Info ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 7 9 , ĊĠĠĠĠĠĠĠ Ġcategory Ġ= ĠCategory . M US IC , ĊĠĠĠĠĠĠĠ Ġscope Ġ= ĠScope . VOICE Ċ ) Ċ class ĠRemove Command Ġ: ĠMusic Command Executor ( true , Ġfalse ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpattern Ġ= ĠPattern . compile ("( \\ d + )? \\ s * ? \\. \\. \\ s *( \\ d + )? ") ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( context : ĠContext , Ġlabel : ĠString , Ġargs : ĠArray < String >, Ġmanager : ĠMusic Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= Ġmanager . scheduler . queue Ġas ĠLinkedList < Audio Track > ĊĊĠĠĠĠĠĠĠ Ġif Ġ( queue . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" The Ġqueue Ġis Ġempty . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtrack Ġ= Ġwhen ( args [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" first " Ġ-> Ġqueue . remove First () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" last " Ġ-> Ġqueue . remove Last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" all " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . clear () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Queue ĠClear ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġ" Cle ared Ġthe Ġmusic Ġqueue ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġargs . join ToString (" Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= Ġpattern . matcher ( arg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( matcher . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġmatcher . group ( 1 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toInt (). coerce At Least ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" Invalid Ġstart Ġof Ġrange . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġmatcher . group ( 2 ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) Ġqueue . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toInt (). coerce At Most ( queue . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" Invalid Ġend Ġof Ġrange . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġstart .. end ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . remove At ( i Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Remove ĠTrack ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġ" Removed Ġtrack Ġnumber Ġ`$ start .. $ end ` Ġfrom Ġthe Ġqueue ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnum Ġ= Ġarg . toInt OrNull () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( num Ġ== Ġnull Ġ|| Ġnum Ġ! in Ġ 1 .. queue . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" That Ġis Ġnot Ġa Ġvalid Ġtrack Ġnumber . ĠTry Ġ` 1 `, Ġ` 1 .. ${ queue . size }`, Ġ` first `, Ġor Ġ` last `. "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġqueue . remove At ( num Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Remove ĠTrack ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġ" Removed Ġ__ [ ${ track . info . embed Title } ]( ${ track . info . uri }) __ Ġfrom Ġthe Ġqueue ." Ġ} ĊĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĠĠĠ Ġ} Ċ }