Skip to content

Commit 58725ca

Browse files
committed
BUGFIX:
- Only DCS Admin is allowed to whitelist / ban
1 parent 1baacc1 commit 58725ca

File tree

1 file changed

+35
-32
lines changed

1 file changed

+35
-32
lines changed

plugins/mission/commands.py

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -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

22942297
async def setup(bot: DCSServerBot):

0 commit comments

Comments
 (0)