From 05e0831f7926dd4afda8e72c6ea5aa7a466b6bea Mon Sep 17 00:00:00 2001 From: uku Date: Fri, 13 Oct 2023 11:11:03 +0200 Subject: add random_shiggy command --- src/commands/mod.rs | 1 + src/commands/random_shiggy.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/commands/random_shiggy.rs (limited to 'src/commands') diff --git a/src/commands/mod.rs b/src/commands/mod.rs index fb7ee4b..1640707 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -3,4 +3,5 @@ pub mod bottom; pub mod convert; pub mod copypasta; pub mod random_lore; +pub mod random_shiggy; pub mod random_teawie; diff --git a/src/commands/random_shiggy.rs b/src/commands/random_shiggy.rs new file mode 100644 index 0000000..b1f1511 --- /dev/null +++ b/src/commands/random_shiggy.rs @@ -0,0 +1,40 @@ +use crate::api::guzzle::REQWEST_CLIENT; +use reqwest::StatusCode; +use serde::Deserialize; +use serenity::builder::CreateApplicationCommand; +use serenity::model::prelude::application_command::CommandDataOption; + +const URL: &str = "https://safebooru.donmai.us/posts/random.json?tags=kemomimi-chan_(naga_u)+naga_u&only=file_url"; +const ERROR_MSG: &str = "couldn't get a shiggy"; + +#[derive(Deserialize)] +struct SafebooruResponse { + file_url: String, +} + +pub async fn run(_: &[CommandDataOption]) -> String { + let resp = match REQWEST_CLIENT + .execute(REQWEST_CLIENT.get(URL).build().unwrap()) + .await + { + Ok(r) => r, + Err(e) => return format!("{} ({:?})", ERROR_MSG, e), + }; + + match resp.status() { + StatusCode::OK => match resp.json::().await { + Ok(sr) => sr.file_url, + Err(e) => format!("{} ({:?})", ERROR_MSG, e), + }, + other => { + println!("{}", resp.text().await.unwrap()); + format!("{} ({:?})", ERROR_MSG, other) + } + } +} + +pub fn register(command: &mut CreateApplicationCommand) -> &mut CreateApplicationCommand { + command + .name("random_shiggy") + .description("get a random shiggy!") +} -- cgit v1.2.3