diff options
| author | seth <[email protected]> | 2023-04-07 22:59:35 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2023-04-07 23:13:40 -0400 |
| commit | 0d0e68fec058b7a8b8e9a4768a183ec08ffad770 (patch) | |
| tree | 6f78cde40cf569a360b7dcce285417e9072e69dc /src/commands | |
| parent | 065ac97194b7640ca350b4770b404d855bf98b17 (diff) | |
add bottom subcommands
Diffstat (limited to 'src/commands')
| -rw-r--r-- | src/commands/bottom.rs | 76 | ||||
| -rw-r--r-- | src/commands/bottom_decode.rs | 35 | ||||
| -rw-r--r-- | src/commands/bottom_encode.rs | 35 | ||||
| -rw-r--r-- | src/commands/mod.rs | 3 |
4 files changed, 77 insertions, 72 deletions
diff --git a/src/commands/bottom.rs b/src/commands/bottom.rs new file mode 100644 index 0000000..d25eab1 --- /dev/null +++ b/src/commands/bottom.rs @@ -0,0 +1,76 @@ +use crate::utils::{bottom_decode, bottom_encode}; +use serenity::builder::CreateApplicationCommand; +use serenity::model::prelude::command::CommandOptionType; +use serenity::model::prelude::interaction::application_command::{ + CommandDataOption, CommandDataOptionValue, +}; + +pub async fn run(options: &[CommandDataOption]) -> String { + let err = "failed to get nested option in"; + let mut ret = "did you forget to enter a message?".to_string(); + + let data = options + .get(0) + .unwrap_or_else(|| panic!("{} {:?}", err, options)); + + // get subcommand to decide whether to encode/decode + let subcommand = data.name.as_str(); + + // get message content + let option = data + .options + .get(0) + .unwrap_or_else(|| panic!("{} {:?}", err, data)) + .resolved + .as_ref() + .expect("failed to resolve string!"); // this is annoying + + if let CommandDataOptionValue::String(msg) = option { + match subcommand { + "encode" => { + ret = bottom_encode(msg).await; + } + "decode" => { + ret = bottom_decode(msg).await; + } + _ => { + ret = "something went wrong :(".to_string(); + } + }; + } + + ret +} + +pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand { + command + .name("bottom") + .description("teawie will translate something to/from bottom for you 🥺") + // nesting...so much nesting + .create_option(|option| { + option + .name("encode") + .description("teawie will encode a message in bottom for you 🥺") + .kind(CommandOptionType::SubCommand) + .create_sub_option(|suboption| { + suboption + .name("content") + .description("what teawie will translate into bottom") + .kind(CommandOptionType::String) + .required(true) + }) + }) + .create_option(|option| { + option + .name("decode") + .description("teawie will decode a message in bottom for you 🥸") + .kind(CommandOptionType::SubCommand) + .create_sub_option(|suboption| { + suboption + .name("content") + .description("what teawie will translate from bottom") + .kind(CommandOptionType::String) + .required(true) + }) + }) +} diff --git a/src/commands/bottom_decode.rs b/src/commands/bottom_decode.rs deleted file mode 100644 index fb91756..0000000 --- a/src/commands/bottom_decode.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::utils; -use serenity::builder::CreateApplicationCommand; -use serenity::model::prelude::command::CommandOptionType; -use serenity::model::prelude::interaction::application_command::{ - CommandDataOption, CommandDataOptionValue, -}; - -pub async fn run(options: &[CommandDataOption]) -> String { - let err_msg = "expected a copyasta"; - let option = options - .get(0) - .expect(err_msg) - .resolved - .as_ref() - .expect(err_msg); - - if let CommandDataOptionValue::String(msg) = option { - return utils::bottom_decode(msg).await; - } - - "did you forget to enter a message?".to_string() -} - -pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand { - command - .name("bottom_decode") - .description("teawie will translate something from bottom for you 🥺") - .create_option(|option| { - option - .name("message") - .description("what you want teawie to translate") - .kind(CommandOptionType::String) - .required(true) - }) -} diff --git a/src/commands/bottom_encode.rs b/src/commands/bottom_encode.rs deleted file mode 100644 index 741adc7..0000000 --- a/src/commands/bottom_encode.rs +++ /dev/null @@ -1,35 +0,0 @@ -use crate::utils; -use serenity::builder::CreateApplicationCommand; -use serenity::model::prelude::command::CommandOptionType; -use serenity::model::prelude::interaction::application_command::{ - CommandDataOption, CommandDataOptionValue, -}; - -pub async fn run(options: &[CommandDataOption]) -> String { - let err_msg = "expected a copyasta"; - let option = options - .get(0) - .expect(err_msg) - .resolved - .as_ref() - .expect(err_msg); - - if let CommandDataOptionValue::String(msg) = option { - return utils::bottom_encode(msg).await; - } - - "did you forget to enter a message?".to_string() -} - -pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand { - command - .name("bottom_encode") - .description("teawie will translate something to bottom for you 🥺") - .create_option(|option| { - option - .name("message") - .description("what you want teawie to translate") - .kind(CommandOptionType::String) - .required(true) - }) -} diff --git a/src/commands/mod.rs b/src/commands/mod.rs index afe1e39..3bda3ac 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -1,6 +1,5 @@ pub mod ask; -pub mod bottom_decode; -pub mod bottom_encode; +pub mod bottom; pub mod copypasta; pub mod random_lore; pub mod random_teawie; |
