From 89a107503fbf43c64294018f040017aaa734c3d2 Mon Sep 17 00:00:00 2001 From: max Date: Sun, 11 Feb 2024 23:32:20 +0000 Subject: [PATCH] feat: add embed for list and answer if the file is not a MP3 or MP4 --- src/bot/cmd/meme/answer.rs | 17 +++++++++++++++- src/bot/cmd/meme/list.rs | 41 +++++++++++++++++++++++++++++--------- 2 files changed, 48 insertions(+), 10 deletions(-) diff --git a/src/bot/cmd/meme/answer.rs b/src/bot/cmd/meme/answer.rs index 7708417..c86d57f 100644 --- a/src/bot/cmd/meme/answer.rs +++ b/src/bot/cmd/meme/answer.rs @@ -1,7 +1,7 @@ use rand::Rng; use serenity::{ all::Message, - builder::{CreateAttachment, CreateMessage}, + builder::{CreateAttachment, CreateEmbed, CreateEmbedFooter, CreateMessage}, client::Context, framework::standard::{macros::command, Args, CommandResult}, }; @@ -114,7 +114,22 @@ pub async fn answer(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu return Ok(()); } }; + if filename.ends_with(".mp3") || filename.ends_with(".mp4") { + let builder = CreateMessage::new() + .add_file(attachment) + .reference_message(msg); + if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await { + println!("Error sending message: {:?}", why); + } + return Ok(()); + } + let footer = CreateEmbedFooter::new("WeeboBot"); + let embed = CreateEmbed::new() + .title(keyword) + .footer(footer) + .image(format!("attachment://{}", filename)); let builder = CreateMessage::new() + .embed(embed) .add_file(attachment) .reference_message(msg); if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await { diff --git a/src/bot/cmd/meme/list.rs b/src/bot/cmd/meme/list.rs index 29228d4..7a2cb60 100644 --- a/src/bot/cmd/meme/list.rs +++ b/src/bot/cmd/meme/list.rs @@ -1,21 +1,44 @@ +use serenity::builder::{CreateEmbed, CreateEmbedFooter, CreateMessage}; use serenity::{ all::Message, client::Context, framework::standard::{macros::command, CommandResult}, }; +use crate::img::config_file::ConfigImgGlobal; + #[command] #[description = "List supported meme keywords"] pub async fn list(ctx: &Context, msg: &Message) -> CommandResult { - if let Err(why) = msg - .channel_id - .say( - &ctx.http, - "Soon TM - List of supported meme keywords will be available here.", - ) - .await - { - println!("Error sending message: {:?}", why) + let config_img = { + let data_read = ctx.data.read().await; + data_read + .get::() + .expect("Config img not found") + .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) = msg.channel_id.send_message(&ctx.http, builder).await { + println!("Error sending message: {:?}", why) + } + return Ok(()); + } + for chunks in list_value.chunks(25) { + let footer = CreateEmbedFooter::new("WeeboBot"); + let embed = CreateEmbed::new() + .title("Meme List") + .fields(chunks.to_vec()) + .footer(footer); + let builder = CreateMessage::new().embed(embed); + if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await { + println!("Error sending message: {:?}", why) + } } Ok(()) }