package Ġdev . jon az . v ured . bot . service . discord Ċ Ċ import Ġdev . jon az . v ured . bot . control . Control Message Case Ċ import Ġdev . jon az . v ured . bot . control . button . Button Ċ import Ġdev . jon az . v ured . bot . control . button . Button Handler Ċ import Ġdev . jon az . v ured . bot . control . button . Button Model Ċ import Ġnet . dv 8 tion . j da . api . entities . Member Ċ import Ġnet . dv 8 tion . j da . api . entities . Message Ċ import Ġnet . dv 8 tion . j da . api . events . interaction . Button Click Event Ċ import Ġnet . dv 8 tion . j da . api . inter actions . components . Button Ġas ĠButton Component Ċ import Ġnet . dv 8 tion . j da . api . inter actions . components . ButtonStyle Ċ import Ġorg . at te o . class index . Class Index Ċ Ċ class ĠButton Service Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbuttons Ġ= Ġmutable ListOf < Button Model >() ĊĊĠĠĠ Ġfun Ġget Buttons ( message Case : ĠControl Message Case ): ĠList < Button Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuttons . filter Ġ{ Ġit . message Case Ġ== Ġmessage Case Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Buttons ( message : ĠMessage , Ġbuttons : ĠList < Button Model >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbutton Components Ġ= Ġbuttons . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Component From Button ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmessage . edit Message ( message ). setAction Row ( button Components ). queue () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= ĠButton :: class . java ĊĠĠĠĠĠĠĠ Ġval Ġclasses Ġ= ĠClass Index . get Annotated ( annotation ) ĊĊĠĠĠĠĠĠĠ Ġclasses . forEach Ġ{ Ġclazz Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Data Ġ= Ġclazz . getAnnotation ( annotation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠButton Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġannotation Data . order , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier Ġ= Ġannotation Data . identifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Case Ġ= Ġannotation Data . message Case , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= Ġannotation Data . style , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġannotation Data . content , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz Ġ= Ġclazz ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also ( buttons :: add ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuttons . sortBy Ġ{ Ġit . order Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexecute ( event : ĠButton Click Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuttons . find Last Ġ{ Ġit . identifier Ġ== Ġevent . component Id Ġ} ?. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġclazz . getMethod ( Button Handler :: execute . name , ĠButton Click Event :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġclazz . getDeclared Constructor (). newInstance () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . invoke ( instance , Ġevent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Component From Button ( button : ĠButton Model ) Ġ= Ġwhen Ġ( button . style ) Ġ{ ĊĠĠĠĠĠĠĠ ĠButton Style . SUCCESS Ġ-> ĠButton Component . success ( button . identifier , Ġbutton . content ) ĊĠĠĠĠĠĠĠ ĠButton Style . SECOND ARY Ġ-> ĠButton Component . secondary ( button . identifier , Ġbutton . content ) ĊĠĠĠĠĠĠĠ ĠButton Style . LINK Ġ-> ĠButton Component . link ( button . identifier , Ġbutton . content ) ĊĠĠĠĠĠĠĠ ĠButton Style . D ANG ER Ġ-> ĠButton Component . danger ( button . identifier , Ġbutton . content ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠButton Component . primary ( button . identifier , Ġbutton . content ) ĊĠĠĠ Ġ} Ċ } Ċ