summaryrefslogtreecommitdiff
path: root/src/commands/moderation
diff options
context:
space:
mode:
authorseth <[email protected]>2023-12-15 01:14:15 -0500
committerseth <[email protected]>2023-12-15 16:41:13 -0500
commite38a441e37ec1a1dff07cf8bcff3e36a411709aa (patch)
tree4bb305a9981fca674c765eda35ec155f83b55367 /src/commands/moderation
parent89f34a53f7f89261bd23ebd06fb7531d6ceca101 (diff)
remove moderation commands
this was mainly an experiment; i don't think we need them
Diffstat (limited to 'src/commands/moderation')
-rw-r--r--src/commands/moderation/actions.rs84
-rw-r--r--src/commands/moderation/config.rs160
-rw-r--r--src/commands/moderation/mod.rs5
3 files changed, 0 insertions, 249 deletions
diff --git a/src/commands/moderation/actions.rs b/src/commands/moderation/actions.rs
deleted file mode 100644
index f7ba7b7..0000000
--- a/src/commands/moderation/actions.rs
+++ /dev/null
@@ -1,84 +0,0 @@
-use crate::colors::Colors;
-use crate::Context;
-
-use color_eyre::eyre::{eyre, Result};
-use log::*;
-use poise::serenity_prelude::{CreateEmbed, User};
-
-fn create_moderation_embed(
- title: String,
- user: &User,
- delete_messages_days: Option<u8>,
- reason: String,
-) -> impl FnOnce(&mut CreateEmbed) -> &mut CreateEmbed {
- let reason = if reason.is_empty() {
- "n/a".to_string()
- } else {
- reason
- };
-
- let fields = [
- ("User", format!("{} ({})", user.name, user.id), false),
- ("Reason", reason, false),
- (
- "Deleted messages",
- format!("Last {} days", delete_messages_days.unwrap_or(0)),
- false,
- ),
- ];
-
- |e: &mut CreateEmbed| e.title(title).fields(fields).color(Colors::Red)
-}
-
-/// ban a user
-#[poise::command(
- slash_command,
- prefix_command,
- required_permissions = "BAN_MEMBERS",
- default_member_permissions = "BAN_MEMBERS"
-)]
-pub async fn ban_user(
- ctx: Context<'_>,
- user: User,
- delete_messages_days: Option<u8>,
- reason: Option<String>,
-) -> Result<()> {
- let days = delete_messages_days.unwrap_or(1);
- let guild = ctx
- .guild()
- .ok_or_else(|| eyre!("Couldn't get guild from message; Unable to ban!"))?;
-
- let reason = reason.unwrap_or_default();
-
- debug!("Banning user {} with reason {reason}", user.id);
- guild.ban_with_reason(ctx, &user, days, &reason).await?;
-
- let embed = create_moderation_embed("User banned!".to_string(), &user, Some(days), reason);
-
- ctx.send(|m| m.embed(embed)).await?;
-
- Ok(())
-}
-
-/// kick a user
-#[poise::command(
- slash_command,
- prefix_command,
- required_permissions = "KICK_MEMBERS",
- default_member_permissions = "KICK_MEMBERS"
-)]
-pub async fn kick_user(ctx: Context<'_>, user: User, reason: Option<String>) -> Result<()> {
- let guild = ctx
- .guild()
- .ok_or_else(|| eyre!("Couldn't get guild from message; Unable to ban!"))?;
-
- let reason = reason.unwrap_or_default();
-
- debug!("Kicking user {} for reason {reason}", user.id);
- guild.kick_with_reason(ctx, &user, &reason).await?;
-
- let embed = create_moderation_embed("User kicked!".to_string(), &user, None, reason);
- ctx.send(|m| m.embed(embed)).await?;
-
- Ok(())
-}
diff --git a/src/commands/moderation/config.rs b/src/commands/moderation/config.rs
deleted file mode 100644
index 64cdb83..0000000
--- a/src/commands/moderation/config.rs
+++ /dev/null
@@ -1,160 +0,0 @@
-use std::str::FromStr;
-
-use crate::{storage, Context};
-use storage::{Settings, SettingsProperties};
-
-use color_eyre::eyre::{eyre, Result};
-use log::*;
-use poise::serenity_prelude::{GuildChannel, ReactionType};
-
-fn split_argument<T>(list: String) -> Vec<T>
-where
- T: FromStr,
-{
- list.split(',')
- .filter_map(|s| s.trim().parse().ok())
- .collect()
-}
-
-fn prop_to_val(setting: &SettingsProperties, settings: &Settings) -> String {
- match setting {
- SettingsProperties::GuildId => settings.guild_id.to_string(),
- SettingsProperties::PinBoardChannel => format!("{:#?}", settings.pinboard_channel),
- SettingsProperties::PinBoardWatch => format!("{:#?}", settings.pinboard_watch),
- SettingsProperties::PinBoardEnabled => settings.pinboard_enabled.to_string(),
- SettingsProperties::ReactBoardChannel => format!("{:#?}", settings.reactboard_channel),
- SettingsProperties::ReactBoardRequirement => {
- format!("{:?}", settings.reactboard_requirement)
- }
- SettingsProperties::ReactBoardReactions => format!("{:?}", settings.reactboard_reactions),
- SettingsProperties::ReactBoardEnabled => settings.reactboard_enabled.to_string(),
- SettingsProperties::OptionalCommandsEnabled => {
- settings.optional_commands_enabled.to_string()
- }
- }
-}
-
-#[poise::command(
- slash_command,
- prefix_command,
- subcommands("set", "get"),
- required_permissions = "MANAGE_GUILD",
- default_member_permissions = "MANAGE_GUILD"
-)]
-pub async fn config(_ctx: Context<'_>) -> Result<()> {
- Ok(())
-}
-
-#[allow(clippy::too_many_arguments)]
-#[poise::command(
- slash_command,
- prefix_command,
- ephemeral,
- guild_only,
- required_permissions = "MANAGE_GUILD"
-)]
-pub async fn set(
- ctx: Context<'_>,
- #[channel_types("Text")]
- #[description = "Where to redirect pins from channels. If empty (the default), the PinBoard is disabled."]
- pinboard_channel: Option<GuildChannel>,
- #[description = "Comma separated list of channels PinBoard redirects. If empty, this will be all channels"]
- pinboard_watch: Option<String>,
- #[description = "Toggle PinBoard"] pinboard_enabled: Option<bool>,
- #[channel_types("Text")]
- #[description = "Where to post messages that made it to the ReactBoard. If left empty, ReactBoard is disabled."]
- reactboard_channel: Option<GuildChannel>,
- #[description = "Comma separated list of emojis that will count towards ReactBoard. If empty, ReactBoard is disabled."]
- reactboard_reaction: Option<String>,
- #[description = "Minimum number of reactions a message needs to make it to the ReactBoard (defaults to 5)"]
- reactboard_requirement: Option<u64>,
- #[description = "Toggle ReactBoard"] reactboard_enabled: Option<bool>,
- #[description = "Enables 'extra' commands like teawiespam and copypasta. Defaults to false."]
- optional_commands_enabled: Option<bool>,
-) -> Result<()> {
- let storage = &ctx.data().storage;
- let gid = ctx.guild_id().unwrap_or_default();
- let mut settings = storage.get_guild_settings(&gid).await?;
- let previous_settings = settings.clone();
-
- if let Some(channel) = pinboard_channel {
- debug!("Setting pinboard_channel to {channel} for {gid}");
- settings.pinboard_channel = Some(channel.id);
- }
-
- if let Some(watch) = pinboard_watch {
- let channels = split_argument(watch);
- debug!("Setting pinboard_watch to {channels:#?} for {gid}");
-
- settings.pinboard_watch = Some(channels);
- }
-
- if let Some(enabled) = pinboard_enabled {
- debug!("Setting pinboard_enabled to {enabled} for {gid}");
- settings.pinboard_enabled = enabled;
- }
-
- if let Some(channel) = reactboard_channel {
- debug!("Setting reactboard_channel to {channel} for {gid}");
- settings.reactboard_channel = Some(channel.id);
- }
-
- if let Some(requirement) = reactboard_requirement {
- debug!("Setting reactboard_requirement to {requirement} for {gid}");
- settings.reactboard_requirement = Some(requirement);
- }
-
- if let Some(reaction) = reactboard_reaction {
- let emojis: Vec<ReactionType> =
- reaction.split(',').filter_map(|r| r.parse().ok()).collect();
- debug!("Setting reactboard_reactions to {emojis:#?} for {gid}");
-
- settings.reactboard_reactions = Some(emojis);
- }
-
- if let Some(enabled) = reactboard_enabled {
- debug!("Setting reactboard_enabled to {enabled} for {gid}");
- settings.reactboard_enabled = enabled;
- }
-
- if let Some(enabled) = optional_commands_enabled {
- debug!("Setting optional_commands_enabled to {enabled} for {}", gid);
- settings.optional_commands_enabled = enabled;
- }
-
- if previous_settings != settings {
- debug!("Updating settings key for {gid}");
- storage.create_guild_settings(settings).await?;
- ctx.reply("Configuration updated!").await?;
- } else {
- debug!("Not updating settings key for {gid} since no changes were made");
- ctx.reply("No changes made, so i'm not updating anything")
- .await?;
- }
-
- Ok(())
-}
-
-#[poise::command(
- slash_command,
- prefix_command,
- ephemeral,
- guild_only,
- required_permissions = "MANAGE_GUILD"
-)]
-pub async fn get(
- ctx: Context<'_>,
- #[description = "The setting you want to get"] setting: SettingsProperties,
-) -> Result<()> {
- let gid = &ctx
- .guild_id()
- .ok_or_else(|| eyre!("Failed to get GuildId from context!"))?;
-
- let settings = ctx.data().storage.get_guild_settings(gid).await?;
- let value = prop_to_val(&setting, &settings);
-
- ctx.send(|m| m.embed(|e| e.field(setting, value, false)))
- .await?;
-
- Ok(())
-}
diff --git a/src/commands/moderation/mod.rs b/src/commands/moderation/mod.rs
deleted file mode 100644
index def251c..0000000
--- a/src/commands/moderation/mod.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-mod actions;
-mod config;
-
-pub use actions::*;
-pub use config::config;