diff --git a/jarvis/cogs/settings.py b/jarvis/cogs/settings.py index d609111..e293da8 100644 --- a/jarvis/cogs/settings.py +++ b/jarvis/cogs/settings.py @@ -1,9 +1,11 @@ """J.A.R.V.I.S. Settings Management Cog.""" +import asyncio import logging from typing import Any from dis_snek import InteractionContext, Scale, Snake from dis_snek.models.discord.channel import GuildText +from dis_snek.models.discord.components import ActionRow, Button, ButtonStyles from dis_snek.models.discord.embed import EmbedField from dis_snek.models.discord.enums import Permissions from dis_snek.models.discord.role import Role @@ -236,9 +238,33 @@ class SettingsCog(Scale): @settings.subcommand(sub_cmd_name="clear", sub_cmd_description="Clear all settings") @check(admin_or_permissions(Permissions.MANAGE_GUILD)) async def _clear(self, ctx: InteractionContext) -> None: - async for setting in Setting.find(q(guild=ctx.guild.id)): - await setting.delete() - await ctx.send("Guild settings cleared") + components = [ + ActionRow( + Button(style=ButtonStyles.RED, emoji="✖️", custom_id="no"), + Button(style=ButtonStyles.GREEN, emoji="✔️", custom_id="yes"), + ) + ] + message = await ctx.send("***Are you sure?***", components=components) + try: + context = await self.bot.wait_for_component( + check=lambda x: ctx.author.id == x.context.author.id, + messages=message, + timeout=60 * 5, + ) + if context.context.custom_id == "yes": + async for setting in Setting.find(q(guild=ctx.guild.id)): + await setting.delete() + await ctx.send("Guild settings cleared") + else: + for row in components: + for component in row.components: + component.disabled = True + await message.edit(components=components) + except asyncio.TimeoutError: + for row in components: + for component in row.components: + component.disabled = True + await message.edit(components=components) def setup(bot: Snake) -> None: