feat: add embed for list and answer if the file is not a MP3 or MP4

This commit is contained in:
max 2024-02-11 23:32:20 +00:00
parent 4fb0174c99
commit 89a107503f
2 changed files with 48 additions and 10 deletions

View File

@ -1,7 +1,7 @@
use rand::Rng; use rand::Rng;
use serenity::{ use serenity::{
all::Message, all::Message,
builder::{CreateAttachment, CreateMessage}, builder::{CreateAttachment, CreateEmbed, CreateEmbedFooter, CreateMessage},
client::Context, client::Context,
framework::standard::{macros::command, Args, CommandResult}, framework::standard::{macros::command, Args, CommandResult},
}; };
@ -114,7 +114,22 @@ pub async fn answer(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
return Ok(()); 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() let builder = CreateMessage::new()
.embed(embed)
.add_file(attachment) .add_file(attachment)
.reference_message(msg); .reference_message(msg);
if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await { if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {

View File

@ -1,21 +1,44 @@
use serenity::builder::{CreateEmbed, CreateEmbedFooter, CreateMessage};
use serenity::{ use serenity::{
all::Message, all::Message,
client::Context, client::Context,
framework::standard::{macros::command, CommandResult}, framework::standard::{macros::command, CommandResult},
}; };
use crate::img::config_file::ConfigImgGlobal;
#[command] #[command]
#[description = "List supported meme keywords"] #[description = "List supported meme keywords"]
pub async fn list(ctx: &Context, msg: &Message) -> CommandResult { pub async fn list(ctx: &Context, msg: &Message) -> CommandResult {
if let Err(why) = msg let config_img = {
.channel_id let data_read = ctx.data.read().await;
.say( data_read
&ctx.http, .get::<ConfigImgGlobal>()
"Soon TM - List of supported meme keywords will be available here.", .expect("Config img not found")
) .clone()
.await };
{ let list_value: Vec<(String, String, bool)> = config_img
println!("Error sending message: {:?}", why) .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(()) Ok(())
} }