diff --git a/src/commands/misc/fuck.rs b/src/commands/misc/fuck.rs new file mode 100644 index 0000000..22ec9c1 --- /dev/null +++ b/src/commands/misc/fuck.rs @@ -0,0 +1,38 @@ +use serenity::client::Context; +use serenity::framework::standard::macros::command; +use serenity::framework::standard::{Args, CommandResult}; +use serenity::model::channel::Message; +use serenity::model::id::UserId; + +#[command] +#[description("Fuck this person in particular")] +#[usage("[] []")] +#[min_args(1)] +#[max_args(3)] +#[bucket("general")] +#[aliases("frick", "fock")] +async fn fuck(ctx: &Context, msg: &Message, mut args: Args) -> CommandResult { + let person = args.single::()?; + let mut amount = args.single::().unwrap_or(3); + if amount > 10 { + amount = 10; + } + let mut verbosity = args.single::().unwrap_or(1); + if verbosity == 0 { + verbosity = 1 + } + let fuck_word = match verbosity { + 1 => "frick", + 2 => "flock", + 3 => "fock", + 4 => "fck", + _ => "fuck", + }; + for _ in 0..amount { + msg.channel_id + .say(&ctx, format!("{} <@{}>", fuck_word, person)) + .await?; + } + + Ok(()) +} diff --git a/src/commands/misc/mod.rs b/src/commands/misc/mod.rs index a0fa73e..e5be547 100644 --- a/src/commands/misc/mod.rs +++ b/src/commands/misc/mod.rs @@ -3,6 +3,7 @@ use serenity::framework::standard::macros::group; use about::ABOUT_COMMAND; use add_media::ADD_MEDIA_COMMAND; use clear::CLEAR_COMMAND; +use fuck::FUCK_COMMAND; use media::MEDIA_COMMAND; use pain::PAIN_COMMAND; use ping::PING_COMMAND; @@ -16,6 +17,7 @@ use xkcd::XKCD_COMMAND; mod about; mod add_media; mod clear; +mod fuck; pub(crate) mod help; mod media; mod pain; @@ -29,6 +31,6 @@ mod xkcd; #[group] #[commands( - ping, stats, shutdown, time, timezones, qalc, about, add_media, media, pain, clear, xkcd + ping, stats, shutdown, time, timezones, qalc, about, add_media, media, pain, clear, xkcd, fuck )] pub struct Misc;