|
5 | 5 | from app.setup import bot, config
|
6 | 6 | from app.utils import (
|
7 | 7 | GuildTextChannel,
|
| 8 | + get_moved_message, |
| 9 | + get_moved_message_author_id, |
8 | 10 | get_or_create_webhook,
|
9 | 11 | is_dm,
|
10 | 12 | is_helper,
|
@@ -199,3 +201,40 @@ async def turn_into_help_post(
|
199 | 201 | return
|
200 | 202 |
|
201 | 203 | await interaction.response.send_modal(HelpPostTitle(message))
|
| 204 | + |
| 205 | + |
| 206 | +@bot.tree.context_menu(name="Delete moved message") |
| 207 | +@discord.app_commands.guild_only() |
| 208 | +async def delete_moved_message( |
| 209 | + interaction: discord.Interaction, message: discord.Message |
| 210 | +) -> None: |
| 211 | + assert not is_dm(interaction.user) |
| 212 | + |
| 213 | + if (webhook_message := await get_moved_message(message)) is None: |
| 214 | + await interaction.response.send_message( |
| 215 | + "This message cannot be deleted.", ephemeral=True |
| 216 | + ) |
| 217 | + return |
| 218 | + |
| 219 | + if ( |
| 220 | + webhook_message is discord.utils.MISSING |
| 221 | + or (author_id := get_moved_message_author_id(webhook_message)) is None |
| 222 | + ): |
| 223 | + await interaction.response.send_message( |
| 224 | + "This message is not a moved message.", ephemeral=True |
| 225 | + ) |
| 226 | + return |
| 227 | + |
| 228 | + if not ( |
| 229 | + interaction.user.id == author_id |
| 230 | + or message.channel.permissions_for(interaction.user).manage_messages |
| 231 | + ): |
| 232 | + await interaction.response.send_message( |
| 233 | + "You are either not the author, or do not have the required " |
| 234 | + "permissions to delete messages.", |
| 235 | + ephemeral=True, |
| 236 | + ) |
| 237 | + return |
| 238 | + |
| 239 | + await message.delete() |
| 240 | + await interaction.response.send_message("Message deleted.", ephemeral=True) |
0 commit comments