summaryrefslogtreecommitdiff
path: root/src/commands/moderation/clear_messages.rs
diff options
context:
space:
mode:
authorseth <[email protected]>2024-04-20 02:31:40 +0000
committerGitHub <[email protected]>2024-04-19 22:31:40 -0400
commit3d07413690c551d9f034c93af85ae8da5a495e14 (patch)
tree517d2e053ebdeb9a3be0ffce6dec36cbc4ce316e /src/commands/moderation/clear_messages.rs
parent1b92b254bc64b356f5c59657d2f0acc767bb2964 (diff)
spring cleaning (#165)
* treewide: lightly refactor everything * once_cell -> std::sync * remove build.rs we can get our target at runtime * commands::copypasta: refactor selection * drop owo_colors * reactboard: always remove author from count * commands: better handle behavior outside of guilds * ci: garnix -> gha * nix: drop flake-parts & pre-commit-hooks * nix: fix rust flags in derivation * add gha badge to readme * ci: fail when format changes are made * ci: only run on push to main * nix: fix nil script * nix: add libiconv to darwin deps * ci: disable fail-fast * nix: fix actionlint & static checks * ci: add release gates * nix: fix nil check again * ci: give release gates unique names * ci: only build static packages in docker workflow * nix: move dev outputs to subflake * fix some typos * nix: cleanup checks & dev shell * add editorconfig
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(())
+}