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

51 lines
1.7 KiB
Rust

use crate::messages::theme::create_theme_menu;
use animethemes_rs::client::AnimeThemesClient;
use animethemes_rs::includes::{AnimeInclude, SearchIncludes};
use serenity::client::Context;
use serenity::framework::standard::macros::command;
use serenity::framework::standard::{Args, CommandResult};
use serenity::model::channel::Message;
use serenity_additions::core::MEDIUM_TIMEOUT;
use serenity_additions::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,
&["anime"],
SearchIncludes {
anime: AnimeInclude::default()
.themes()
.themes_entries()
.themes_entries_videos(),
..Default::default()
},
)
.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(())
}