diff --git a/cogs/commands/message_management.py b/cogs/commands/message_management.py index d3172f7..c1dde49 100644 --- a/cogs/commands/message_management.py +++ b/cogs/commands/message_management.py @@ -24,6 +24,38 @@ class MessageManagement(commands.Cog, name="Message Management"): """ self.bot = bot + @nextcord.slash_command( + description="Clears highscores channel of all table messages. Does not change data.", + default_member_permissions=nextcord.Permissions(administrator=True), + ) + async def delete_table_messages(self, interaction: nextcord.Interaction) -> None: + """ + Deletes all table messages from highscores channel. Does not change data. + Does not delete highscores channel id. + + Args: + interaction (nextcord.Interaction): Interaction that invoked the command + """ + guild = highscores_data.get_guild(interaction.guild_id) + + highscores_channel: nextcord.TextChannel = interaction.guild.get_channel( + guild.highscore_channel + ) + + await interaction.response.defer(ephemeral=True) + + for table in guild.tables: + try: + table_message: nextcord.Message = await highscores_channel.fetch_message( + table.message_id + ) + await table_message.delete() + except nextcord.NotFound: + # silently ignore that messages are not found. They got deleted already. + pass + + await interaction.send("Table messages deleted.", ephemeral=True) + @nextcord.slash_command( description="Triggers post/update of highscores to registered highscore channel.", default_member_permissions=nextcord.Permissions(administrator=True), @@ -53,7 +85,7 @@ class MessageManagement(commands.Cog, name="Message Management"): error_response = "No tables have been created for this guild. Please create some tables." assert ( len(highscores_data.get_guild(interaction.guild_id).tables) > 0 - ), await interaction.response(error_response, ephemeral=True) + ), await interaction.send(error_response, ephemeral=True) # awaiting response because posting scores takes a while await interaction.response.defer(ephemeral=True) @@ -66,4 +98,4 @@ class MessageManagement(commands.Cog, name="Message Management"): # messages have been sent. highscores_data.save_guild_data(guild) - await interaction.followup.send(f"Posted all tables to <#{channel.id}>.", ephemeral=True) + await interaction.send(f"Posted all tables to <#{channel.id}>.", ephemeral=True)