diff options
Diffstat (limited to 'src/commands')
| -rw-r--r-- | src/commands/general/ask.rs | 8 | ||||
| -rw-r--r-- | src/commands/general/bing.rs | 2 | ||||
| -rw-r--r-- | src/commands/general/config.rs | 6 | ||||
| -rw-r--r-- | src/commands/general/convert.rs | 18 | ||||
| -rw-r--r-- | src/commands/general/emoji.rs | 2 | ||||
| -rw-r--r-- | src/commands/general/pfp.rs | 2 | ||||
| -rw-r--r-- | src/commands/general/random.rs | 44 | ||||
| -rw-r--r-- | src/commands/general/version.rs | 4 | ||||
| -rw-r--r-- | src/commands/mod.rs | 11 | ||||
| -rw-r--r-- | src/commands/moderation/clear_messages.rs | 2 | ||||
| -rw-r--r-- | src/commands/optional/mod.rs | 2 | ||||
| -rw-r--r-- | src/commands/optional/teawiespam.rs | 30 | ||||
| -rw-r--r-- | src/commands/optional/uwurandom.rs | 49 |
13 files changed, 54 insertions, 126 deletions
diff --git a/src/commands/general/ask.rs b/src/commands/general/ask.rs index 1300e97..8d83622 100644 --- a/src/commands/general/ask.rs +++ b/src/commands/general/ask.rs @@ -1,18 +1,18 @@ use crate::{client::Context, consts, utils}; -use eyre::{Context as _, Result}; +use anyhow::{Context as _, Result}; -/// Ask teawie a question! +/// Ask a question! #[poise::command(prefix_command, slash_command)] #[allow(clippy::no_effect_underscore_binding)] pub async fn ask( ctx: Context<'_>, #[rename = "question"] - #[description = "The question you want to ask teawie"] + #[description = "The question you want to ask"] _question: String, ) -> Result<()> { let resp = utils::random_choice(consts::RESPONSES) - .wrap_err("Couldn't choose from random responses!")?; + .context("Couldn't choose from random responses!")?; ctx.say(resp).await?; Ok(()) diff --git a/src/commands/general/bing.rs b/src/commands/general/bing.rs index 28fdf0d..8390659 100644 --- a/src/commands/general/bing.rs +++ b/src/commands/general/bing.rs @@ -1,6 +1,6 @@ use crate::client::Context; -use eyre::Result; +use anyhow::Result; /// Make sure the wie is alive #[poise::command(prefix_command)] diff --git a/src/commands/general/config.rs b/src/commands/general/config.rs index 6adb78b..bdc102e 100644 --- a/src/commands/general/config.rs +++ b/src/commands/general/config.rs @@ -3,7 +3,7 @@ use crate::storage::settings::{Properties, Settings}; use std::str::FromStr; -use eyre::{OptionExt as _, Result}; +use anyhow::{Context as _, Result}; use log::debug; use poise::serenity_prelude::{CreateEmbed, GuildChannel, ReactionType}; use poise::{ChoiceParameter, CreateReply}; @@ -70,7 +70,7 @@ pub async fn set( #[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."] + #[description = "Enables 'extra' commands like uwurandom. Defaults to false."] optional_commands_enabled: Option<bool>, ) -> Result<()> { if let Some(storage) = &ctx.data().storage { @@ -152,7 +152,7 @@ pub async fn get( ) -> Result<()> { let gid = &ctx .guild_id() - .ok_or_eyre("Failed to get GuildId from context!")?; + .context("Failed to get GuildId from context!")?; if let Some(storage) = &ctx.data().storage { let settings = storage.get_guild_settings(gid).await?; diff --git a/src/commands/general/convert.rs b/src/commands/general/convert.rs index b5e7018..a736ccf 100644 --- a/src/commands/general/convert.rs +++ b/src/commands/general/convert.rs @@ -1,7 +1,7 @@ use crate::client::Context; +use anyhow::Result; use bottomify::bottom; -use eyre::Result; use poise::serenity_prelude::constants::MESSAGE_CODE_LIMIT; #[allow(clippy::unused_async)] @@ -13,44 +13,44 @@ pub async fn convert(_: Context<'_>) -> Result<()> { Ok(()) } -/// Ask teawie to convert °F to °C +/// Convert °F to °C #[poise::command(slash_command)] pub async fn to_celsius( ctx: Context<'_>, - #[description = "What teawie will convert"] degrees_fahrenheit: f32, + #[description = "What to convert"] degrees_fahrenheit: f32, ) -> Result<()> { let temp = (degrees_fahrenheit - 32.0) * (5.0 / 9.0); ctx.say(temp.to_string()).await?; Ok(()) } -/// Ask teawie to convert °C to °F +/// Convert °C to °F #[poise::command(slash_command)] pub async fn to_fahrenheit( ctx: Context<'_>, - #[description = "What teawie will convert"] degrees_celsius: f32, + #[description = "What to convert"] degrees_celsius: f32, ) -> Result<()> { let temp = (degrees_celsius * (9.0 / 5.0)) + 32.0; ctx.say(temp.to_string()).await?; Ok(()) } -/// Teawie will translate to bottom 🥺 +/// Translate to bottom 🥺 #[poise::command(slash_command)] pub async fn to_bottom( ctx: Context<'_>, - #[description = "What teawie will translate into bottom"] message: String, + #[description = "What to translate into bottom"] message: String, ) -> Result<()> { let encoded = bottom::encode_string(&message); ctx.say(encoded).await?; Ok(()) } -/// Teawie will translate from bottom 🥸 +/// Translate from bottom 🥸 #[poise::command(slash_command)] pub async fn from_bottom( ctx: Context<'_>, - #[description = "What teawie will translate from bottom"] message: String, + #[description = "What to translate from bottom"] message: String, ) -> Result<()> { let resp: String; diff --git a/src/commands/general/emoji.rs b/src/commands/general/emoji.rs index bbae0b5..d91b50c 100644 --- a/src/commands/general/emoji.rs +++ b/src/commands/general/emoji.rs @@ -1,6 +1,6 @@ use crate::{client::Context, consts::Colors}; -use eyre::Result; +use anyhow::Result; use poise::{ serenity_prelude::{CreateEmbed, Emoji}, CreateReply, diff --git a/src/commands/general/pfp.rs b/src/commands/general/pfp.rs index 34ae795..9040b9b 100644 --- a/src/commands/general/pfp.rs +++ b/src/commands/general/pfp.rs @@ -1,6 +1,6 @@ use crate::{client::Context, consts::Colors}; -use eyre::Result; +use anyhow::Result; use poise::{ serenity_prelude::{CreateEmbed, User}, CreateReply, diff --git a/src/commands/general/random.rs b/src/commands/general/random.rs index 094123b..053e4bb 100644 --- a/src/commands/general/random.rs +++ b/src/commands/general/random.rs @@ -1,22 +1,14 @@ -use crate::{client::Context, consts, http, utils}; +use crate::{client::Context, http, utils}; -use eyre::Result; +use anyhow::Result; +use rand::Rng; -#[poise::command(slash_command, subcommands("lore", "teawie", "shiggy"))] +#[poise::command(slash_command, subcommands("teawie", "shiggy", "uwu"))] #[allow(clippy::unused_async)] pub async fn random(_: Context<'_>) -> Result<()> { Ok(()) } -/// Get a random piece of teawie lore! -#[poise::command(prefix_command, slash_command)] -pub async fn lore(ctx: Context<'_>) -> Result<()> { - let resp = utils::random_choice(consts::LORE)?; - ctx.say(resp).await?; - - Ok(()) -} - /// Get a random teawie #[poise::command(prefix_command, slash_command)] pub async fn teawie(ctx: Context<'_>) -> Result<()> { @@ -34,3 +26,31 @@ pub async fn shiggy(ctx: Context<'_>) -> Result<()> { Ok(()) } + +/// Some uwu +#[poise::command(prefix_command, slash_command)] +pub async fn uwu( + ctx: Context<'_>, + #[description = "The amount of uwurandom to generate"] + #[min = 1] + #[max = 100] + length: Option<u16>, +) -> Result<()> { + let length = length.unwrap_or(rand::thread_rng().gen_range(1..50)); + + let mut result = String::with_capacity(length as usize); + // ThreadRng is not Send(obviously), and rustc is slightly too paranoid about rng spilling to await point + // So calm it by constraining it to a block + { + let mut rng = rand::thread_rng(); + let mut state_machine = uwurandom_rs::StateMachine::new(&mut rng); + for _ in 0..length { + let generated; + (state_machine, generated) = state_machine.generate(&mut rng); + result.push(generated); + } + } + ctx.say(result).await?; + + Ok(()) +} diff --git a/src/commands/general/version.rs b/src/commands/general/version.rs index bdf6805..34513fc 100644 --- a/src/commands/general/version.rs +++ b/src/commands/general/version.rs @@ -2,7 +2,7 @@ use crate::{client::Context, consts::Colors}; use std::env::consts::{ARCH, OS}; -use eyre::Result; +use anyhow::Result; use poise::{serenity_prelude::CreateEmbed, CreateReply}; /// Get version info @@ -12,7 +12,7 @@ pub async fn version(ctx: Context<'_>) -> Result<()> { let revision_url = format!( "[{}]({}/tree/{})", sha, - option_env!("CARGO_PKG_REPOSITORY").unwrap_or("https://github.com/getchoo/teawieBot"), + option_env!("CARGO_PKG_REPOSITORY").unwrap_or("https://github.com/getchoo/chill"), sha, ); diff --git a/src/commands/mod.rs b/src/commands/mod.rs index b8d0381..14b7b2b 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -2,7 +2,6 @@ use crate::client::{Data, Error}; mod general; mod moderation; -mod optional; type Command = poise::Command<Data, Error>; @@ -18,12 +17,6 @@ macro_rules! cmd { } pub fn all() -> Vec<Command> { - let mut all_commands = global(); - all_commands.append(&mut optional()); - all_commands -} - -pub fn global() -> Vec<Command> { vec![ cmd!(general, ask), cmd!(general, bing), @@ -36,7 +29,3 @@ pub fn global() -> Vec<Command> { cmd!(moderation, clear_messages), ] } - -pub fn optional() -> Vec<Command> { - vec![cmd!(optional, teawiespam), cmd!(optional, uwurandom)] -} diff --git a/src/commands/moderation/clear_messages.rs b/src/commands/moderation/clear_messages.rs index 65a30be..11a7ef8 100644 --- a/src/commands/moderation/clear_messages.rs +++ b/src/commands/moderation/clear_messages.rs @@ -1,6 +1,6 @@ use crate::client::Context; -use eyre::Result; +use anyhow::Result; use log::debug; use poise::serenity_prelude::GetMessages; diff --git a/src/commands/optional/mod.rs b/src/commands/optional/mod.rs deleted file mode 100644 index a3d1bd2..0000000 --- a/src/commands/optional/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod teawiespam; -pub mod uwurandom; diff --git a/src/commands/optional/teawiespam.rs b/src/commands/optional/teawiespam.rs deleted file mode 100644 index bfac852..0000000 --- a/src/commands/optional/teawiespam.rs +++ /dev/null @@ -1,30 +0,0 @@ -use crate::client::Context; - -use eyre::Result; -use log::debug; - -/// teawie will spam you. -#[poise::command(slash_command)] -pub async fn teawiespam(ctx: Context<'_>) -> Result<()> { - if let Some(guild_id) = ctx.guild_id() { - if let Some(storage) = &ctx.data().storage { - let settings = storage.get_guild_settings(&guild_id).await?; - - if !settings.optional_commands_enabled { - debug!("Not running command in {guild_id} since it's disabled"); - ctx.say("I'm not allowed to do that here").await?; - - return Ok(()); - } - } else { - debug!("Ignoring restrictions on command; no storage backend is attached!"); - } - } else { - debug!("Ignoring restrictions on command; we're not in a guild."); - } - - let wies = "<:teawiesmile:1056438046440042546>".repeat(50); - ctx.say(wies).await?; - - Ok(()) -} diff --git a/src/commands/optional/uwurandom.rs b/src/commands/optional/uwurandom.rs deleted file mode 100644 index c952dee..0000000 --- a/src/commands/optional/uwurandom.rs +++ /dev/null @@ -1,49 +0,0 @@ -use crate::client::Context; - -use eyre::Result; -use log::debug; -use rand::Rng; - -/// Generate some amount of uwurandom -#[poise::command(slash_command)] -pub async fn uwurandom( - ctx: Context<'_>, - #[description = "The amount of uwurandom to generate"] - #[min = 1] - #[max = 2000] - length: Option<u16>, -) -> Result<()> { - if let Some(guild_id) = ctx.guild_id() { - if let Some(storage) = &ctx.data().storage { - let settings = storage.get_guild_settings(&guild_id).await?; - - if !settings.optional_commands_enabled { - debug!("Not running command in {guild_id} since it's disabled"); - ctx.say("I'm not allowed to do that here").await?; - - return Ok(()); - } - } else { - debug!("Ignoring restrictions on command; no storage backend is attached!"); - } - } else { - debug!("Ignoring restrictions on command; we're not in a guild"); - } - - let length = length.unwrap_or(rand::thread_rng().gen_range(1..50)); - - let mut result = String::with_capacity(length as usize); - // ThreadRng is not Send(obviously), and rustc is slightly too paranoid about rng spilling to await point - // So calm it by constraining it to a block - { - let mut rng = rand::thread_rng(); - let mut state_machine = uwurandom_rs::StateMachine::new(&mut rng); - for _ in 0..length { - let generated; - (state_machine, generated) = state_machine.generate(&mut rng); - result.push(generated); - } - } - ctx.say(result).await?; - Ok(()) -} |
