package Ġxyz . gn ar bot . gn ar . commands . pol ls Ċ Ċ import Ġnet . dv 8 tion . j da . api . Embed Builder Ċ import Ġxyz . gn ar bot . gn ar . commands . Bot Info Ċ 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 . commands . Context Ċ import Ġxyz . gn ar bot . gn ar . utils . Utils Ċ import Ġxyz . gn ar bot . gn ar . utils . desc Ċ import Ġjava . time . Duration Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ @ Command ( ĊĠĠĠĠĠĠĠ Ġaliases Ġ= Ġ[" poll "], ĊĠĠĠĠĠĠĠ Ġusage Ġ= Ġ"( description ) Ġ| Ġ( time ) Ġ| Ġ( option Ġ 1 ); ( option Ġ 2 ); ...", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Create Ġa Ġpoll ." Ċ ) Ċ @ Bot Info ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 7 6 , ĊĠĠĠĠĠĠĠ Ġcool down Ġ= Ġ 1 0 0 0 0 Ċ ) Ċ class ĠPoll Command Ġ: ĠCommand Executor () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( context : ĠContext , Ġlabel : ĠString , Ġargs : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparts Ġ= Ġargs . join ToString (" Ġ"). split ('| '). map ( String :: trim ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( parts . size Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . bot . command Dispatcher . send Help ( context , Ġinfo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġparts [ 0 ] ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= ĠUtils . parse Time ( parts [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( time Ġ< ĠDuration . of Seconds ( 1 0 ). to Millis ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" Poll Ġduration Ġcan 't Ġbe Ġless Ġthan Ġ 1 0 Ġseconds . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( time Ġ> ĠDuration . of Hours ( 1 ). to Millis ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" Poll Ġduration Ġcan Ġnot Ġbe Ġgreater Ġthan Ġ 1 Ġhours . "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= Ġparts [ 2 ]. split (' ; '). map ( String :: trim ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( options . size Ġ<= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). error (" Please Ġoffer Ġmore Ġthan Ġ 1 Ġoption Ġfor Ġthe Ġpoll . Ġ`_ poll ĠWhy Ġth o ? Ġ| Ġ 1 m Ġ| Ġ( option Ġ 1 ); ( option Ġ 2 ); ... ` "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Poll ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġdescription Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield (" Vote Ġthrough Ġclicking Ġthe Ġre actions Ġon Ġthe Ġchoices Ġbelow !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . forEach Indexed Ġ{ Ġindex , Ġoption Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ln ("${ '\ u 0 0 3 0 ' Ġ+ Ġindex }\ u 2 0 E 3 Ġ** $ option ** ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Ġ{ Ġ" Results Ġwill Ġbe Ġfinal Ġin Ġ${ parts [ 1 ]} ." Ġ} ĊĠĠĠĠĠĠĠ Ġ}. action (). queue Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġoptions . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . add Reaction ("${ '\ u 0 0 3 0 ' Ġ+ Ġindex }\ u 2 0 E 3 "). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . edit Message ( Embed Builder ( it . embed s [ 0 ]). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġ" V oting Ġhas Ġended ! ĠCheck Ġthe Ġresults Ġin Ġthe Ġnewer Ġmessages !" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Fields () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build ()). queue After ( time , ĠTimeUnit . MILLISECONDS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . send (). embed (" Poll ĠResults ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdesc Ġ{ Ġdescription Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtop Votes Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwin ners Ġ= Ġmutable ListOf < Int >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield (" V oting Ġhas Ġended ! ĠHere Ġare Ġthe Ġresults !") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . reactions . forEach Ġ{ Ġreaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġreaction . reaction Em ote . name [ 0 ] Ġ- Ġ'\ u 0 0 3 0 ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ! in Ġ 0 Ġuntil Ġoptions . size ) Ġreturn @ forEach ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions [ value ]. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ln ("${ reaction . reaction Em ote . name } Ġ** $ it ** ĠâĢĶ Ġ__ ${ reaction . count Ġ- Ġ 1 } ĠV otes __ ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( reaction . count Ġ- Ġ 1 Ġ> Ġtop Votes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin ners . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Votes Ġ= Ġreaction . count Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin ners Ġ+= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( reaction . count Ġ- Ġ 1 Ġ== Ġtop Votes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin ners Ġ+= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . clear Re actions (). queue () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield (" Winner ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin ners . join ToString ( prefix Ġ= Ġ"** ", Ġpostfix Ġ= Ġ"** ") Ġ{ Ġoptions [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. action (). queue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ