package Ġde . rub ix dev . master mind . button Handlers Ċ Ċ import Ġde . rub ix dev . master mind . commands . show Board Ċ import Ġde . rub ix dev . master mind . commands . update Game Screen Ċ import Ġde . rub ix dev . master mind . count Indexed Ċ import Ġde . rub ix dev . master mind . event Handlers . new Game Button Ċ import Ġde . rub ix dev . master mind . save UserData Ċ import Ġde . rub ix dev . master mind . userData . Answer P ins Ċ import Ġde . rub ix dev . master mind . userData . Board Row Ċ import Ġde . rub ix dev . master mind . userData . Bot User Ċ import Ġdev . k ord . common . annotation . K ord Preview Ċ import Ġdev . k ord . core . entity . interaction . Button Interaction Ċ import Ġdev . k ord . rest . builder . component . Action Row Builder Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ import Ġorg . apache . logging . log 4 j . Logger Ċ Ċ private Ġval Ġlogger : ĠLogger Ġ= ĠLog Manager . getLogger () Ċ Ċ @ K ord Preview Ċ suspend Ġfun Ġhandle Submit Button Press ( interaction : ĠButton Interaction , Ġbot User : ĠBot User ) Ġ{ ĊĠĠĠ Ġif Ġ( bot User . next Move . size Ġ!= Ġbot User . pins ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Game Screen ( interaction , Ġbot User ) ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġtotal P ins Ġ= Ġ 0 ĊĠĠĠ Ġval Ġmatched P ins Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġfor Ġ( pin Ġin Ġbot User . next Move ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pin Ġin Ġbot User . board . solution . filter Indexed Ġ{ Ġi , Ġ_ Ġ-> Ġi Ġ! in Ġmatched P ins Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( i , Ġp ) Ġin Ġbot User . board . solution . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p Ġ== Ġpin Ġ&& Ġi Ġ! in Ġmatched P ins ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatched P ins . add ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotal P ins ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġblack P ins Ġ= Ġbot User . next Move . count Indexed Ġ{ Ġi , Ġpin Ġ-> Ġpin Ġ== Ġbot User . board . solution [ i ] Ġ} ĊĠĠĠ Ġval Ġwhite P ins Ġ= Ġtotal P ins Ġ- Ġblack P ins ĊĊĠĠĠ Ġbot User . board . rows . add ( ĊĠĠĠĠĠĠĠ ĠBoard Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbot User . next Move . toList (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnswer P ins ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack P ins , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhite P ins ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġbot User . next Move . clear () ĊĊĠĠĠ Ġval Ġusername Ġ= Ġinteraction . user . username ĊĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠ Ġ" Processed Ġmove Ġof Ġ${ username }: Ġ(${ bot User . board . rows . last (). game P ins . join ToString (" )(" )}) " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġmessage Ġ= Ġinteraction . message Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . error (" Illegal Ġstate : ĠButton Ġinteraction Ġhas Ġno Ġpublic Ġmessage Ġassociated Ġwith Ġit ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( black P ins Ġ== Ġbot User . pins ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Game Screen ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbot User Ġ= Ġbot User , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull Update Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinteraction Ġ= Ġinteraction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Components Ġ= Ġmutable ListOf ( Action Row Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Game Button ( bot User . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġlogger . info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ username Ġfound Ġthe Ġsolution Ġafter Ġ${ bot User . board . rows . size } Ġturns : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" (${ bot User . board . solution . join ToString (" )(" )}) " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbot User . board . is Finished Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbot User . active MessageId Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġsave UserData () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Board ( interaction . user , Ġmessage . get Guild OrNull (), Ġmessage . getChannel (), Ġinteraction Ġ= Ġinteraction ) ĊĠĠĠ Ġ} Ċ } Ċ