package Ġpw . aru . bot . permissions Ċ Ċ import Ġcom . me wn a . cat nip . entity . guild . Member Ċ import Ġcom . me wn a . cat nip . entity . user . User Ċ import Ġcom . me wn a . cat nip . entity . util . Permission .* Ċ import Ġpw . aru . A ru . Bot . devs Ċ import Ġpw . aru . bot . pat re on . Pat re on Ċ import Ġpw . aru . core . permissions . Member Permissions Ċ import Ġpw . aru . core . permissions . Member Permissions .* Ċ import Ġpw . aru . core . permissions . Permission Ċ import Ġpw . aru . core . permissions . User Permissions Ċ import Ġpw . aru . core . permissions . User Permissions .* Ċ import Ġpw . aru . db . A ru DB Ċ import Ġpw . aru . db . entities . user . User Settings Ċ Ċ class ĠPermission Resolver ( private Ġval Ġdb : ĠA ru DB ) Ġ{ ĊĠĠĠ Ġfun Ġresolve User ( user : ĠUser ): ĠSet < User Permissions > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠLinked HashSet < User Permissions >() ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠUser Settings ( db , Ġuser . id As Long ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! settings . black listed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= ĠUSE _ BOT ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Pat re on . is User Prem ium ( db , Ġuser )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= ĠPRE MI UM ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( devs . contains ( user . id ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= ĠBOT _ DE VELO PER ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Member ( member : ĠMember ): ĠSet < Member Permissions > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠLinked HashSet < Member Permissions >() ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( member . id As Long () Ġ== Ġmember . guild (). owner Id As Long ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= ĠOWNER ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmember . permissions (). as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġperm Rem ap [ it ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach ( list :: plus Assign ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( member . roles (). any Ġ{ Ġadmin Roles . contains ( it . name (). toLowerCase ()) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= ĠADMIN ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( member . roles (). any Ġ{ Ġdj Roles . contains ( it . name (). toLowerCase ()) Ġ} Ġ|| Ġlist . contains ( ADMIN )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ+= ĠD J ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve ( member : ĠMember ): ĠSet < Permission > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresolve User ( member . user ()) Ġ+ Ġresolve Member ( member ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdj Roles Ġ= ĠarrayOf (" dj ", Ġ" j ! dj ", Ġ" aru ! dj ") ĊĠĠĠ Ġprivate Ġval Ġadmin Roles Ġ= ĠarrayOf (" j ! admin ", Ġ" aru ! admin ") ĊĊĠĠĠ Ġprivate Ġval Ġperm Rem ap Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ ĠADMIN ISTR ATOR Ġto ĠADMIN , ĊĠĠĠĠĠĠĠ ĠMAN AGE _ GU ILD Ġto ĠSERVER , ĊĠĠĠĠĠĠĠ ĠMAN AGE _ RO LES Ġto ĠRO LES , ĊĠĠĠĠĠĠĠ ĠMAN AGE _ CHANNEL S Ġto ĠCHAN NEL S , ĊĠĠĠĠĠĠĠ ĠMAN AGE _ MESSAGES Ġto ĠMESS AGES , ĊĠĠĠĠĠĠĠ ĠMAN AGE _ N ICK NAME Ġto ĠN ICK NAMES , ĊĠĠĠĠĠĠĠ ĠK ICK _ MEMBER S Ġto ĠK ICK , ĊĠĠĠĠĠĠĠ ĠB AN _ MEMBER S Ġto ĠB AN ĊĠĠĠ Ġ) Ċ } Ċ