@@ -2257,38 +2257,41 @@ async def on_member_update(self, before: discord.Member, after: discord.Member):
22572257
22582258 @commands .Cog .listener ()
22592259 async def on_interaction (self , interaction : discord .Interaction ):
2260- if interaction .type is discord .InteractionType .component :
2261- custom_id = interaction .data .get ('custom_id' )
2262- if custom_id .startswith ('whitelist_' ):
2263- name = custom_id [len ('whitelist_' ):]
2264- async with self .lock :
2265- if not self .eventlistener .whitelist :
2266- self .eventlistener .whitelist = await asyncio .to_thread (self .eventlistener ._read_whitelist )
2267- if name not in self .eventlistener .whitelist :
2268- self .eventlistener .whitelist .add (name )
2269- whitelist = Path (self .node .config_dir ) / 'whitelist.txt'
2270- async with aiofiles .open (whitelist , mode = "a" , encoding = 'utf-8' ) as f :
2271- await f .write (f"{ name } \n " )
2272- for server in self .bus .servers .values ():
2273- if server .status in [Status .RUNNING , Status .PAUSED ]:
2274- await server .send_to_dcs ({
2275- "command" : "uploadWhitelist" ,
2276- "name" : name
2277- })
2278- # noinspection PyUnresolvedReferences
2279- await interaction .response .edit_message (view = None )
2280- elif custom_id .startswith ('ban_' ):
2281- if custom_id .startswith ('ban_profanity_' ):
2282- ucid = custom_id [len ('ban_profanity_' ):]
2283- await self .bus .ban (ucid , interaction .user .display_name , _ ("Inappropriate nickname" ))
2284- elif custom_id .startswith ('ban_evade_' ):
2285- ucid = custom_id [len ('ban_evade_' ):]
2286- await self .bus .ban (ucid , interaction .user .display_name , _ ("Trying to evade a ban with a 2nd account." ))
2287- # noinspection PyUnresolvedReferences
2288- await interaction .response .edit_message (view = None )
2289- elif custom_id == 'cancel' :
2290- # noinspection PyUnresolvedReferences
2291- await interaction .response .edit_message (view = None )
2260+ if (interaction .type is not discord .InteractionType .component or
2261+ not utils .check_roles (self .bot .roles ['DCS Admin' ], interaction .user )):
2262+ return
2263+
2264+ custom_id = interaction .data .get ('custom_id' )
2265+ if custom_id .startswith ('whitelist_' ):
2266+ name = custom_id [len ('whitelist_' ):]
2267+ async with self .lock :
2268+ if not self .eventlistener .whitelist :
2269+ self .eventlistener .whitelist = await asyncio .to_thread (self .eventlistener ._read_whitelist )
2270+ if name not in self .eventlistener .whitelist :
2271+ self .eventlistener .whitelist .add (name )
2272+ whitelist = Path (self .node .config_dir ) / 'whitelist.txt'
2273+ async with aiofiles .open (whitelist , mode = "a" , encoding = 'utf-8' ) as f :
2274+ await f .write (f"{ name } \n " )
2275+ for server in self .bus .servers .values ():
2276+ if server .status in [Status .RUNNING , Status .PAUSED ]:
2277+ await server .send_to_dcs ({
2278+ "command" : "uploadWhitelist" ,
2279+ "name" : name
2280+ })
2281+ # noinspection PyUnresolvedReferences
2282+ await interaction .response .edit_message (view = None )
2283+ elif custom_id .startswith ('ban_' ):
2284+ if custom_id .startswith ('ban_profanity_' ):
2285+ ucid = custom_id [len ('ban_profanity_' ):]
2286+ await self .bus .ban (ucid , interaction .user .display_name , _ ("Inappropriate nickname" ))
2287+ elif custom_id .startswith ('ban_evade_' ):
2288+ ucid = custom_id [len ('ban_evade_' ):]
2289+ await self .bus .ban (ucid , interaction .user .display_name , _ ("Trying to evade a ban with a 2nd account." ))
2290+ # noinspection PyUnresolvedReferences
2291+ await interaction .response .edit_message (view = None )
2292+ elif custom_id == 'cancel' :
2293+ # noinspection PyUnresolvedReferences
2294+ await interaction .response .edit_message (view = None )
22922295
22932296
22942297async def setup (bot : DCSServerBot ):
0 commit comments