summaryrefslogtreecommitdiff
path: root/src/commands/moderation/clear_messages.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/moderation/clear_messages.rs')
-rw-r--r--src/commands/moderation/clear_messages.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/commands/moderation/clear_messages.rs b/src/commands/moderation/clear_messages.rs
new file mode 100644
index 0000000..8761bcb
--- /dev/null
+++ b/src/commands/moderation/clear_messages.rs
@@ -0,0 +1,30 @@
+use crate::{Context, Error};
+
+use log::debug;
+use poise::serenity_prelude::GetMessages;
+
+#[poise::command(
+ slash_command,
+ guild_only,
+ ephemeral,
+ required_permissions = "MANAGE_MESSAGES",
+ default_member_permissions = "MANAGE_MESSAGES"
+)]
+pub async fn clear_messages(
+ ctx: Context<'_>,
+ #[description = "How many messages to delete"] num_messages: u8,
+) -> Result<(), Error> {
+ ctx.defer_ephemeral().await?;
+
+ let channel = ctx.channel_id();
+ let to_get = GetMessages::new().limit(num_messages);
+ let messages = channel.messages(ctx, to_get).await?;
+
+ debug!("Clearing {num_messages} messages from channel {channel}!");
+ channel.delete_messages(ctx, messages).await?;
+
+ ctx.reply(format!("Deleted {num_messages} message(s)"))
+ .await?;
+
+ Ok(())
+}