You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2b-rs/src/commands/weeb/theme.rs

49 lines
1.6 KiB
Rust

use crate::messages::theme::create_theme_menu;
use animethemes_rs::client::AnimeThemesClient;
use animethemes_rs::includes;
use serenity::client::Context;
use serenity::framework::standard::macros::command;
use serenity::framework::standard::{Args, CommandResult};
use serenity::model::channel::Message;
use serenity_rich_interaction::core::MEDIUM_TIMEOUT;
use serenity_rich_interaction::ephemeral_message::EphemeralMessage;
#[command]
#[description("Query for the opening/ending/insert song of an anime")]
#[usage("<query..>")]
#[min_args(1)]
#[aliases("animetheme", "anime-theme", "opening", "ending", "ost")]
#[bucket("general")]
async fn theme(ctx: &Context, msg: &Message, args: Args) -> CommandResult {
let query = args.message();
let client = AnimeThemesClient::default();
let search_results = client
.search(
query,
&[includes::ANIME],
&[
"animethemes",
"animethemes.animethemeentries",
"animethemes.animethemeentries.videos",
],
)
.await?;
if let Some(anime) = search_results.anime {
if anime.is_empty() {
EphemeralMessage::create(&ctx.http, msg.channel_id, MEDIUM_TIMEOUT, |c| {
c.reference_message(msg).content("No themes found")
})
.await?;
} else {
create_theme_menu(ctx, msg.channel_id, anime, msg.author.id).await?;
}
} else {
EphemeralMessage::create(&ctx.http, msg.channel_id, MEDIUM_TIMEOUT, |c| {
c.reference_message(msg).content("No themes found")
})
.await?;
}
Ok(())
}