package Ġxyz . gn ar bot . gn ar . commands . exec utors . music Ċ Ċ import Ġxyz . gn ar bot . gn ar . commands . Category Ċ import Ġxyz . gn ar bot . gn ar . commands . Command Ċ import Ġxyz . gn ar bot . gn ar . commands . Command Executor Ċ import Ġxyz . gn ar bot . gn ar . utils . Context Ċ import Ġxyz . gn ar bot . gn ar . utils . YouTube Ċ Ċ @ Command ( ĊĠĠĠĠĠĠĠ Ġaliases Ġ= ĠarrayOf (" play "), ĊĠĠĠĠĠĠĠ Ġusage Ġ= Ġ"- ( url | YT Ġsearch )", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Join s Ġand Ġplay Ġmusic Ġin Ġa Ġchannel .", ĊĠĠĠĠĠĠĠ Ġcategory Ġ= ĠCategory . M US IC Ċ ) Ċ class ĠPlay Command Ġ: ĠCommand Executor () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( context : ĠContext , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . guild Data . music Manager ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġbot Channel Ġ= Ġcontext . guild . self Member . voice State . channel ĊĠĠĠĠĠĠĠ Ġval Ġuser Channel Ġ= Ġcontext . guild . get Member ( context . message . author ). voice State . channel ĊĊĠĠĠĠĠĠĠ Ġif Ġ( bot Channel Ġ!= Ġnull Ġ&& Ġbot Channel Ġ!= Ġuser Channel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" The Ġbot Ġis Ġalready Ġplaying Ġmusic Ġin Ġanother Ġchannel . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user Channel Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" You Ġmust Ġbe Ġin Ġa Ġvoice Ġchannel Ġto Ġplay Ġmusic . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( args . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( manager . player . is Paused ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmanager . player . is Paused Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Play ĠMusic ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcontext . bot . config . music Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Music Ġis Ġnow Ġplaying ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( manager . player . playing Track Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" Music Ġis Ġalready Ġplaying . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( manager . scheduler . queue . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Empty ĠQueue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġcontext . bot . config . music Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" There Ġis Ġno Ġmusic Ġqueued Ġright Ġnow . ĠAdd Ġsome Ġsongs Ġwith Ġ` play Ġ- song | url `. " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġif Ġ(" https ://" Ġin Ġargs [ 0 ] Ġ|| Ġ" http ://" Ġin Ġargs [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġargs . join ToString ("+ ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠYouTube . search ( query , Ġ 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( results . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" No ĠYouTube Ġresults Ġreturned Ġfor Ġ`${ query . replace ('+ ', Ġ' Ġ' )} `. "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresults [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . url ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( bot Channel Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . guild Data . music Manager . open Audio Connection ( user Channel , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġmanager . load And Play ( context , Ġurl ) ĊĠĠĠ Ġ} Ċ } Ċ