BotDiscord/src/botv2/cmd/meme/enable.rs

43 lines
1.6 KiB
Rust

use crate::botv2::init::{Context,Error};
use poise::{serenity_prelude::{CreateEmbed, CreateEmbedFooter, CreateMessage}, CreateReply};
use tracing::instrument;
/// Enable/Disable auto answer available meme keywords
#[instrument(skip(ctx),level="info")]
#[poise::command(
slash_command,
prefix_command,
category = "meme"
)]
pub async fn enable(ctx: Context<'_>) -> Result<(), Error> {
tracing::info!(channel = ctx.channel_id().get(), guild = ?ctx.guild_id().unwrap().get(),"Enable command called");
let config_img = ctx.data().config_img.clone();
let list_value: Vec<(String, String, bool)> = config_img
.keyword
.iter()
.map(|x| (x.value.clone().join(", "), String::new(), true))
.collect();
if list_value.is_empty() {
let builder = CreateMessage::new().content("No meme keyword found");
if let Err(why) = ctx.channel_id().send_message(ctx.http(), builder).await {
tracing::error!("Error sending message: {:?}", why);
}
return Ok(());
}
let embed_vec = list_value.chunks(25).map(|chunks| {
let footer = CreateEmbedFooter::new("WeeboBot");
CreateEmbed::new()
.title("Meme List")
.fields(chunks.to_vec())
.footer(footer)
});
let mut reply = CreateReply::default();
reply.embeds = embed_vec.collect();
if let Err(why) = ctx.send(reply).await {
tracing::error!("Error sending message: {:?}", why);
}
Ok(())
}
// https://github.com/serenity-rs/poise/blob/current/examples/fluent_localization/main.rs