From bf107f9a1894d129efc7140389757b7ca3fa6d71 Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Wed, 9 Nov 2022 18:01:14 +0100 Subject: [PATCH] Added stats remove command #46 --- .../src/modules/stats/command/stats_group.py | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/kdb-bot/src/modules/stats/command/stats_group.py b/kdb-bot/src/modules/stats/command/stats_group.py index 58105c0b48..67c8469a7e 100644 --- a/kdb-bot/src/modules/stats/command/stats_group.py +++ b/kdb-bot/src/modules/stats/command/stats_group.py @@ -168,9 +168,32 @@ class StatsGroup(DiscordCommandABC): self._logger.trace(__name__, f'Started stats command form') await ctx.interaction.response.send_modal(form) except Exception as e: - self._logger.error(__name__, f'Cannot view statistic {name}', e) + self._logger.error(__name__, f'Cannot edit statistic {name}', e) await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.stats.edit.failed')) @edit.autocomplete('name') async def edit_autocomplete(self, interaction: discord.Interaction, current: str) -> TList[app_commands.Choice[str]]: return [app_commands.Choice(name=f'{statistic.name}: {statistic.description}', value=statistic.name) for statistic in stats] + + @stats.command() + @commands.guild_only() + async def remove(self, ctx: Context, name: str): + self._logger.debug(__name__, f'Received command stats remove {ctx}: {name}') + if not await self._client_utils.check_if_bot_is_ready_yet_and_respond(ctx): + return + + if not self._permissions.is_member_technician(ctx.author): + await self._message_service.send_ctx_msg(ctx, self._t.transform('common.no_permission_message')) + self._logger.trace(__name__, f'Finished command stats remove') + return + + try: + stats.remove(stats.where(lambda s: s.name == name).single()) + self._logger.trace(__name__, f'Finished stats remove command') + except Exception as e: + self._logger.error(__name__, f'Cannot remove statistic {name}', e) + await self._message_service.send_ctx_msg(ctx, self._t.transform('modules.stats.edit.failed')) + + @remove.autocomplete('name') + async def edit_autocomplete(self, interaction: discord.Interaction, current: str) -> TList[app_commands.Choice[str]]: + return [app_commands.Choice(name=f'{statistic.name}: {statistic.description}', value=statistic.name) for statistic in stats]