From 9d89135b4c30385154d56b0e9b5abddf07d96491 Mon Sep 17 00:00:00 2001 From: Nick Jungmann Date: Sat, 17 Dec 2022 21:49:46 +0100 Subject: [PATCH] Added SQL command to delete all records by user id in "userjoinedvoicechannel"-table #23 --- .../bot_data/abc/user_joined_voice_channel_abc.py | 3 +++ .../bot_data/model/user_joined_voice_channel.py | 7 +++++++ .../service/user_joined_voice_channel_service.py | 4 ++++ kdb-bot/src/modules/base/command/user_group.py | 14 +++++++++++--- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/kdb-bot/src/bot_data/abc/user_joined_voice_channel_abc.py b/kdb-bot/src/bot_data/abc/user_joined_voice_channel_abc.py index d46a6f2b..b1084da8 100644 --- a/kdb-bot/src/bot_data/abc/user_joined_voice_channel_abc.py +++ b/kdb-bot/src/bot_data/abc/user_joined_voice_channel_abc.py @@ -35,3 +35,6 @@ class UserJoinedVoiceChannelRepositoryABC(ABC): @abstractmethod def delete_user_joined_voice_channel(self, user_joined_voice_channel: UserJoinedVoiceChannel): pass + + @abstractmethod + def delete_user_joined_voice_channel_by_user_id(self, user_id: int): pass diff --git a/kdb-bot/src/bot_data/model/user_joined_voice_channel.py b/kdb-bot/src/bot_data/model/user_joined_voice_channel.py index 9f216350..4977c2e6 100644 --- a/kdb-bot/src/bot_data/model/user_joined_voice_channel.py +++ b/kdb-bot/src/bot_data/model/user_joined_voice_channel.py @@ -119,3 +119,10 @@ class UserJoinedVoiceChannel(TableABC): DELETE FROM `UserJoinedVoiceChannel` WHERE `JoinId` = {self._join_id}; """) + + @staticmethod + def delete_by_user_id_string(id: int) -> str: + return str(f""" + DELETE FROM `UserJoinedVoiceChannel` + WHERE `UserId` = {id} + """) \ No newline at end of file diff --git a/kdb-bot/src/bot_data/service/user_joined_voice_channel_service.py b/kdb-bot/src/bot_data/service/user_joined_voice_channel_service.py index d6b1b596..919b2ee5 100644 --- a/kdb-bot/src/bot_data/service/user_joined_voice_channel_service.py +++ b/kdb-bot/src/bot_data/service/user_joined_voice_channel_service.py @@ -121,3 +121,7 @@ class UserJoinedVoiceChannelRepositoryService(UserJoinedVoiceChannelRepositoryAB def delete_user_joined_voice_channel(self, user_joined_voice_channel: UserJoinedVoiceChannel): self._logger.trace(__name__, f'Send SQL command: {user_joined_voice_channel.delete_string}') self._context.cursor.execute(user_joined_voice_channel.delete_string) + + def delete_user_joined_voice_channel_by_user_id(self, user_id: int): + self._logger.trace(__name__, f'Send SQL command: {UserJoinedVoiceChannel.delete_by_user_id_string}') + self._context.cursor.execute(UserJoinedVoiceChannel.delete_by_user_id_string(user_id)) diff --git a/kdb-bot/src/modules/base/command/user_group.py b/kdb-bot/src/modules/base/command/user_group.py index 3d0d12c5..102bef95 100644 --- a/kdb-bot/src/modules/base/command/user_group.py +++ b/kdb-bot/src/modules/base/command/user_group.py @@ -225,7 +225,11 @@ class UserGroup(DiscordCommandABC): atr_list = [self._atr_dict["xp"]] return [app_commands.Choice(name=atr, value=atr) for atr in atr_list] - async def remove(self, ctx: context, atr: str, member: discord.Member = none): + @user.command() + @commands.guild_only() + @CommandChecks.check_is_ready() + @CommandChecks.check_is_member_moderator() + async def remove(self, ctx: Context, atr: str, member: discord.Member = None): self._logger.debug(__name__, f'Received command user-remove {ctx}:{member}') if member is None or not isinstance(member, discord.Member): @@ -237,9 +241,13 @@ class UserGroup(DiscordCommandABC): match atr: case 'xp': user.xp = 0 + self._users.update_user(user) + self._db.save_changes() + await self._level.check_level(member) case 'ontime': - # ToDo: SQL-Statement to delete all records for dcUser in user_joined_voice_channel + self._user_joined_voice_channel.delete_user_joined_voice_channel_by_user_id(user.user_id) + self._db.save_changes() return case other: @@ -248,7 +256,7 @@ class UserGroup(DiscordCommandABC): await self._message_service.send_interaction_msg( ctx.interaction, - self._t.transform(f'modules.base.user.remove.{atr}').format(value, member.mention) + self._t.transform(f'modules.base.user.remove.{atr}').format(atr, member.mention) ) @remove.autocomplete('atr')