/* Ċ Ġ* ĠThis ĠSource ĠCode ĠForm Ġis Ġsubject Ġto Ġthe Ġterms Ġof Ġthe ĠMozilla ĠPublic Ċ Ġ* ĠLicense , Ġv . Ġ 2 . 0 . ĠIf Ġa Ġcopy Ġof Ġthe ĠM PL Ġwas Ġnot Ġdistributed Ġwith Ġthis Ċ Ġ* Ġfile , ĠYou Ġcan Ġobtain Ġone Ġat Ġhttps :// mozilla . org / MPL / 2 . 0 /. Ċ Ġ*/ Ċ Ċ @ file : Suppress (" Too Generic Exception Ca ught ") Ċ Ċ package Ġcom . kot l ind is cord . k ord . extensions . components . menus Ċ Ċ import Ġcom . kot l ind is cord . k ord . extensions . Discord Relay ed Exception Ċ import Ġcom . kot l ind is cord . k ord . extensions . components . callbacks . Public Menu Callback Ċ import Ġcom . kot l ind is cord . k ord . extensions . types . Failure Reason Ċ import Ġcom . kot l ind is cord . k ord . extensions . types . respond Ċ import Ġcom . kot l ind is cord . k ord . extensions . utils . scheduling . Task Ċ import Ġdev . k ord . core . behavior . interaction . respond Ep hemeral Ċ import Ġdev . k ord . core . behavior . interaction . respond Public Ċ import Ġdev . k ord . core . event . interaction . Select Menu Interaction Create Event Ċ import Ġdev . k ord . rest . builder . message . create . Interaction Response Create Builder Ċ Ċ public Ġtype alias ĠInitial Public Select Menu Response Builder Ġ= ĊĠĠĠ Ġ( suspend ĠInteraction Response Create Builder .( Select Menu Interaction Create Event ) Ġ-> ĠUnit )? Ċ Ċ /** ĠClass Ġrepresenting Ġa Ġpublic - only Ġselect Ġ( dropdown ) Ġmenu . Ġ**/ Ċ public Ġopen Ġclass ĠPublic Select Menu ( timeout Task : ĠTask ?) Ġ: ĠSelect Menu < Public Select Menu Context >( timeout Task ) Ġ{ ĊĠĠĠ Ġ/** Ġ@ suppress ĠInitial Ġresponse Ġbuilder . Ġ**/ ĊĠĠĠ Ġpublic Ġopen Ġvar Ġinitial Response Builder : ĠInitial Public Select Menu Response Builder Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĠCall Ġthis Ġto Ġopen Ġwith Ġa Ġresponse , Ġomit Ġit Ġto Ġack Ġinstead . Ġ**/ ĊĠĠĠ Ġpublic Ġfun Ġinitial Response ( body : ĠInitial Public Select Menu Response Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinitial Response Builder Ġ= Ġbody ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠuseCallback ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback : ĠPublic Menu Callback Ġ= Ġcallback Registry . get OfType OrNull ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Callback Ġ\"$ id \" Ġis Ġeither Ġmissing Ġor Ġis Ġthe Ġwrong Ġtype .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . call ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcheck Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallback : ĠPublic Menu Callback Ġ= Ġcallback Registry . get OfType OrNull ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Callback Ġ\"$ id \" Ġis Ġeither Ġmissing Ġor Ġis Ġthe Ġwrong Ġtype .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassed Ġ= Ġcallback . run Checks ( event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcall ( event : ĠSelect Menu Interaction Create Event ): ĠUnit Ġ= Ġwith Lock Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . call ( event ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! run Checks ( event )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Lock ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDiscord Relay ed Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . interaction . respond Ep hemeral Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . failure Response Builder ( this , Ġe . reason , ĠFailure Reason . Provided Check Failure ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Lock ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġif Ġ( initial Response Builder Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . interaction . respond Public Ġ{ Ġinitial Response Builder !! ( event ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! deferred Ack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . interaction . ack nowledge Public () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . interaction . ack nowledge Public Deferred Message Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠPublic Select Menu Context ( this , Ġevent , Ġresponse ) ĊĊĠĠĠĠĠĠĠ Ġcontext . populate () ĊĊĠĠĠĠĠĠĠ Ġfirst S entry Breadcrumb ( context , Ġthis ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Bot Per ms ( context ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDiscord Relay ed Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond Text ( context , Ġe . reason , ĠFailure Reason . Own Permissions Check Failure ( e )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ with Lock ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbody ( context ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDiscord Relay ed Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrespond Text ( context , Ġe . reason , ĠFailure Reason . Relay ed Failure ( e )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Error ( context , Ġt , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrespond Text ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠPublic Select Menu Context , ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġfailure Type : ĠFailure Reason < *> ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . respond Ġ{ Ġsettings . failure Response Builder ( this , Ġmessage , Ġfailure Type ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ