summaryrefslogtreecommitdiff
path: root/src/commands/copypasta.rs
diff options
context:
space:
mode:
authorseth <[email protected]>2023-04-04 23:23:28 -0400
committerseth <[email protected]>2023-04-05 20:34:12 -0400
commit65d0b7a553f718b1ba34799e604ceb07c062af61 (patch)
tree9a6b1c78aa6e79c2201ba124b536a05231b0ae20 /src/commands/copypasta.rs
parented076bbd6fc22b32ea353ae6bd3cac79d039719a (diff)
rewrite in rust :)
Diffstat (limited to 'src/commands/copypasta.rs')
-rw-r--r--src/commands/copypasta.rs66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/commands/copypasta.rs b/src/commands/copypasta.rs
new file mode 100644
index 0000000..9424665
--- /dev/null
+++ b/src/commands/copypasta.rs
@@ -0,0 +1,66 @@
+use crate::utils;
+use serenity::builder::CreateApplicationCommand;
+use serenity::http::client::Http;
+use serenity::model::channel::Message;
+use serenity::model::id::ChannelId;
+use serenity::model::prelude::command::CommandOptionType;
+use serenity::model::prelude::interaction::application_command::{
+ CommandDataOption, CommandDataOptionValue,
+};
+use serenity::prelude::SerenityError;
+use std::sync::Arc;
+
+pub async fn run(options: &[CommandDataOption], channel_id: ChannelId, http: &Arc<Http>) -> 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(copypasta) = option {
+ let replies = &utils::get_copypasta(copypasta).await;
+ let len = replies.len() - 1;
+
+ // send messages separately if we have > 1
+ for (i, reply) in replies.iter().enumerate() {
+ let resp: Result<Message, SerenityError>;
+
+ if i < len {
+ resp = channel_id.send_message(&http, |m| m.content(reply)).await;
+
+ match resp {
+ Ok(_) => continue,
+ Err(why) => {
+ println!("couldn't send message: {:?}", why);
+ }
+ }
+ }
+ }
+
+ return replies[len].to_string();
+ }
+
+ "couldn't find a copypasta".to_string()
+}
+
+pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand {
+ command
+ .name("copypasta")
+ .description("send funni copypasta")
+ .create_option(|option| {
+ option
+ .name("copypasta")
+ .description("the copypasta you want to send")
+ .kind(CommandOptionType::String)
+ .required(true)
+ // .add_string_choice("ismah", "ismah") // renable this later
+ .add_string_choice("happymeal", "happymeal")
+ .add_string_choice("sus", "sus")
+ .add_string_choice("ticktock", "ticktock")
+ .add_string_choice("egrill", "egrill")
+ .add_string_choice("dvd", "dvd")
+ .add_string_choice("twitter", "twitter")
+ })
+}