package Ġcom . dong tr onic . di abot . platforms . discord . listeners Ċ Ċ import Ġcom . dong tr onic . di abot . data . Reward DAO Ċ import Ġcom . dong tr onic . di abot . platforms . discord . utils . Role Utils Ċ import Ġnet . dv 8 tion . j da . api . events . message . guild . Guild Message Received Event Ċ import Ġnet . dv 8 tion . j da . api . hooks . Listener Adapter Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠRew ard Listener Ġ: ĠListener Adapter () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Reward Listener :: class . java ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Guild Message Received ( event : ĠGuild Message Received Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event . author . is Bot ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġauthor Ġ= Ġevent . author ĊĠĠĠĠĠĠĠ Ġval Ġguild Ġ= Ġevent . guild ĊĠĠĠĠĠĠĠ Ġval Ġmember Ġ= Ġguild . get Member ( author ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Roles Ġ= Ġmember . roles ĊĊĠĠĠĠĠĠĠ Ġif ( Reward DAO . getInstance (). get Opt Out ( guild . id , Ġauthor . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSkip Ġusers Ġthat Ġhave Ġopt ed Ġout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpotential Rewards Ġ= ĠRew ard DAO . getInstance (). getSimple Rewards ( guild . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrewards Ġ= ĠRole Utils . build Rewards Map ( potential Rewards , Ġguild ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġuser Ġapplies Ġfor Ġnew Ġrewards ĊĠĠĠĠĠĠĠ Ġfor Ġ(( required , Ġreward List ) Ġin Ġrewards ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Roles . contains ( required )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( reward Ġin Ġreward List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! user Roles . contains ( reward )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġguild . add Role To Member ( member , Ġreward ). queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Assign ing Ġreward Ġroles Ġ${ reward . name } Ġ(${ reward . id }) Ġto Ġ${ author . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ