summaryrefslogtreecommitdiff
path: root/src/commands/moderation
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
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')
-rw-r--r--src/commands/moderation/clear.rs39
-rw-r--r--src/commands/moderation/clear_messages.rs30
-rw-r--r--src/commands/moderation/mod.rs11
3 files changed, 31 insertions, 49 deletions
diff --git a/src/commands/moderation/clear.rs b/src/commands/moderation/clear.rs
deleted file mode 100644
index bfc9c38..0000000
--- a/src/commands/moderation/clear.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use crate::Context;
-
-use eyre::{Context as _, Result};
-use log::debug;
-use poise::serenity_prelude::futures::{StreamExt, TryStreamExt};
-
-#[poise::command(
- slash_command,
- 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: usize,
-) -> Result<()> {
- ctx.defer_ephemeral().await?;
-
- let channel = ctx.channel_id();
- let messages = channel
- .messages_iter(ctx)
- .take(num_messages)
- .try_fold(Vec::new(), |mut acc, msg| async move {
- acc.push(msg);
- Ok(acc)
- })
- .await
- .wrap_err_with(|| {
- format!("Couldn't collect {num_messages} messages from channel {channel}")
- })?;
-
- debug!("Clearing {num_messages} messages from channel {channel}!");
- channel.delete_messages(ctx, messages).await?;
-
- ctx.reply(format!("Deleted {num_messages} message(s)"))
- .await?;
-
- Ok(())
-}
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(())
+}
diff --git a/src/commands/moderation/mod.rs b/src/commands/moderation/mod.rs
index 5a8cd08..ed6a7c6 100644
--- a/src/commands/moderation/mod.rs
+++ b/src/commands/moderation/mod.rs
@@ -1,10 +1 @@
-use crate::Data;
-
-use eyre::Report;
-use poise::Command;
-
-mod clear;
-
-pub fn to_commands() -> Vec<Command<Data, Report>> {
- vec![clear::clear_messages()]
-}
+pub mod clear_messages;