package Ġdev . k ord . core . entity . interaction Ċ Ċ import Ġdev . k ord . common . annotation . K ord Preview Ċ import Ġdev . k ord . common . entity . ComponentType Ċ import Ġdev . k ord . common . entity . Snow flake Ċ import Ġdev . k ord . common . entity . optional . map Ċ import Ġdev . k ord . common . entity . optional . or Empty Ċ import Ġdev . k ord . common . entity . optional . unwrap Ċ import Ġdev . k ord . core . K ord Ċ import Ġdev . k ord . core . behavior . User Behavior Ċ import Ġdev . k ord . core . behavior . interaction . Component Interaction Behavior Ċ import Ġdev . k ord . core . cache . data . Component Data Ċ import Ġdev . k ord . core . cache . data . Interaction Data Ċ import Ġdev . k ord . core . entity . Message Ċ import Ġdev . k ord . core . entity . User Ċ import Ġdev . k ord . core . entity . component .* Ċ import Ġdev . k ord . core . supplier . Entity Supplier Ċ import Ġdev . k ord . core . supplier . Entity Supply Strategy Ċ import Ġdev . k ord . rest . builder . component . Select Menu Builder Ċ Ċ /** Ċ Ġ* ĠAn Ġinteraction Ġcreated Ġfrom Ġa Ġuser Ġinteraction Ġwith Ġa Ġ[ Component ]. Ċ Ġ* Ċ Ġ* Ġ@ see ĠButton Interaction Ċ Ġ* Ġ@ see ĠSelect Menu Interaction Ċ Ġ*/ Ċ Ċ sealed Ġinterface ĠComponent Interaction Ġ: ĠInteraction , ĠComponent Interaction Behavior Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġuser : ĠUser ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠUser ( data . user . value !! , Ġk ord ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġmessage Ġthat Ġcontains Ġthe Ġinteract ed Ġcomponent , Ġnull Ġif Ġthe Ġmessage Ġis Ġep hemeral . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmessage : ĠMessage ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdata . message . unwrap Ġ{ ĠMessage ( it , Ġk ord , Ġsupplier ) Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ Button Component . custom Id ] Ġor Ġ[ Select Menu Component . custom Id ] Ġthat Ġtriggered Ġthe Ġinteraction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcomponent Id : ĠString Ġget () Ġ= Ġdata . data . custom Id . value !! ĊĊĠĠĠ Ġval Ġcomponent Type : ĠComponent Type Ġget () Ġ= Ġdata . data . component Type . value !! ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ Component ] Ġthe Ġuser Ġinteract ed Ġwith , Ġnull Ġif Ġthe Ġmessage Ġis Ġep hemeral . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcomponent : ĠComponent ? ĊĊĠĠĠ Ġabstract Ġoverride Ġfun Ġwith Strategy ( strategy : ĠEntity Supply Strategy < *> ): ĠComponent Interaction ĊĊĠĠĠ Ġabstract Ġoverride Ġfun ĠtoString (): ĠString Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġ[ Component Interaction ] Ġwith Ġthe Ġgiven Ġ[ data ], Ġ[ application Id ], Ġ[ k ord ] Ġand Ġ[ supplier ]. Ċ Ġ* Ċ Ġ* Ġ@ throws ĠIllegalArgumentException Ġif Ġthe Ġinteraction Ġis Ġnot Ġfrom Ġa Ġ[ Button Component ] Ġor Ġa Ġ[ Select Menu Component ]. Ċ Ġ*/ Ċ Ċ fun ĠComponent Interaction ( ĊĠĠĠ Ġdata : ĠInteraction Data , ĊĠĠĠ Ġk ord : ĠK ord , ĊĠĠĠ Ġsupplier : ĠEntity Supplier Ġ= Ġk ord . default Supplier , Ċ ): ĠComponent Interaction Ġ= Ġwhen Ġ( val Ġtype Ġ= Ġdata . data . component Type . value ) Ġ{ ĊĠĠĠ ĠComponent Type . Button Ġ-> ĠButton Interaction ( data , Ġk ord , Ġsupplier ) ĊĠĠĠ ĠComponent Type . Select Menu Ġ-> ĠSelect Menu Interaction ( data , Ġk ord , Ġsupplier ) ĊĠĠĠ ĠComponent Type . Action Row Ġ-> Ġerror (" Action Ġrows Ġcan 't Ġhave Ġinteractions ") ĊĠĠĠ Ġis ĠComponent Type . Unknown Ġ-> ĠUnknown Component Interaction ( data , Ġk ord , Ġsupplier ) ĊĠĠĠ Ġnull Ġ-> Ġerror (" Component Ġtype Ġwas Ġnull ") Ċ } ĊĊ Ċ /** Ċ Ġ* ĠAn Ġinteraction Ġcreated Ġfrom Ġa Ġuser Ġpressing Ġa Ġ[ Button Component ]. Ċ Ġ*/ Ċ Ċ class ĠButton Interaction ( ĊĠĠĠ Ġoverride Ġval Ġdata : ĠInteraction Data , ĊĠĠĠ Ġoverride Ġval Ġk ord : ĠK ord , ĊĠĠĠ Ġoverride Ġval Ġsupplier : ĠEntity Supplier Ċ ) Ġ: ĠComponent Interaction Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcomponent : ĠButton Component ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmessage ?. components . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Action Row Component >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . buttons Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . custom Id Ġ== Ġcomponent Id Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Strategy ( strategy : ĠEntity Supply Strategy < *> ): ĠButton Interaction Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠButton Interaction ( data , Ġk ord , Ġstrategy . supply ( k ord )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ" Button Interaction ( data =$ data , Ġapplication Id =$ application Id , Ġk ord =$ k ord , Ġsupplier =$ supplier , Ġuser =$ user )" ĊĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠButton Interaction ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġother . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġdata . hashCode () Ċ } ĊĊ Ċ class ĠUnknown Component Interaction ( ĊĠĠĠ Ġoverride Ġval Ġdata : ĠInteraction Data , ĊĠĠĠ Ġoverride Ġval Ġk ord : ĠK ord , ĊĠĠĠ Ġoverride Ġval Ġsupplier : ĠEntity Supplier Ċ ) Ġ: ĠComponent Interaction Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcomponent : ĠUnknown Component ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmessage ?. components . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Unknown Component >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . data . custom Id . value Ġ== Ġcomponent Id Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Strategy ( strategy : ĠEntity Supply Strategy < *> ): ĠUnknown Component Interaction Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUnknown Component Interaction ( data , Ġk ord , Ġstrategy . supply ( k ord )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Unknown Component Interaction ( data =$ data , Ġapplication Id =$ application Id , Ġk ord =$ k ord , Ġsupplier =$ supplier , Ġuser =$ user )" ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAn Ġinteraction Ġcreated Ġfrom Ġa Ġuser Ġinteracting Ġwith Ġa Ġ[ Select Menu Component ]. Ċ Ġ*/ Ċ Ċ class ĠSelect Menu Interaction ( ĊĠĠĠ Ġoverride Ġval Ġdata : ĠInteraction Data , ĊĠĠĠ Ġoverride Ġval Ġk ord : ĠK ord , ĊĠĠĠ Ġoverride Ġval Ġsupplier : ĠEntity Supplier Ċ ) Ġ: ĠComponent Interaction Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġselected Ġvalues , Ġthe Ġexpected Ġrange Ġshould Ġbetween Ġ 0 Ġand Ġ 2 5 . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Select Menu Builder . minimum Values ] ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Select Menu Builder . maximum Values ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġvalues : ĠList < String > Ġget () Ġ= Ġdata . data . values . or Empty () ĊĊĠĠĠ Ġoverride Ġval Ġcomponent : ĠSelect Menu Component ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmessage ?. components . or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Action Row Component >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . select Menus Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . custom Id Ġ== Ġcomponent Id Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Strategy ( strategy : ĠEntity Supply Strategy < *> ): ĠSelect Menu Interaction Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSelect Menu Interaction ( data , Ġk ord , Ġstrategy . supply ( k ord )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ" Select Menu Interaction ( data =$ data , Ġapplication Id =$ application Id , Ġk ord =$ k ord , Ġsupplier =$ supplier , Ġuser =$ user )" ĊĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠSelect Menu Interaction ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġother . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġdata . hashCode () Ċ Ċ } ĊĊ