feat: turn answer into an embed one

This commit is contained in:
max 2024-02-11 23:51:42 +00:00
parent e472930ade
commit 7c29ff5ce0

View File

@ -1,7 +1,9 @@
use serenity::{ use serenity::{
all::Message, all::Message,
builder::{CreateEmbed, CreateEmbedFooter, CreateMessage},
client::Context, client::Context,
framework::standard::{macros::command, Args, CommandResult}, framework::standard::{macros::command, Args, CommandResult},
model::colour,
}; };
use crate::db::user_image::UserImage; use crate::db::user_image::UserImage;
@ -13,6 +15,10 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
Some(guild) => guild, Some(guild) => guild,
None => return Ok(()), None => return Ok(()),
}; };
let footer = CreateEmbedFooter::new("WeeboBot");
let embed = CreateEmbed::new()
.title("Enable/Disable auto meme answer")
.footer(footer);
let mut user_in_db: UserImage = let mut user_in_db: UserImage =
match UserImage::find_by_server_id_user_id(&guild.get(), &msg.author.id.get()).await { match UserImage::find_by_server_id_user_id(&guild.get(), &msg.author.id.get()).await {
Ok(Some(user_in_db)) => user_in_db.clone(), Ok(Some(user_in_db)) => user_in_db.clone(),
@ -21,11 +27,11 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
match user_in_db.create().await { match user_in_db.create().await {
Ok(_) => user_in_db, Ok(_) => user_in_db,
Err(e) => { Err(e) => {
if let Err(why) = msg let embed = embed
.channel_id .field("Could't create user in db", e.to_string(), false)
.say(&ctx.http, "Couldn't create user in db") .color(colour::Color::RED);
.await let builder = CreateMessage::new().embed(embed).reference_message(msg);
{ if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {
println!("Error sending message: {:?}", why) println!("Error sending message: {:?}", why)
} }
println!("Error saving user image: {:?}", e); println!("Error saving user image: {:?}", e);
@ -34,11 +40,11 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
} }
} }
Err(e) => { Err(e) => {
if let Err(why) = msg let embed = embed
.channel_id .field("Error finding user image", e.to_string(), false)
.say(&ctx.http, "Error finding user image") .color(colour::Color::RED);
.await let builder = CreateMessage::new().embed(embed).reference_message(msg);
{ if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {
println!("Error sending message: {:?}", why) println!("Error sending message: {:?}", why)
} }
println!("Error finding user image: {:?}", e); println!("Error finding user image: {:?}", e);
@ -47,11 +53,13 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
}; };
if let Ok(new_status) = args.single::<bool>() { if let Ok(new_status) = args.single::<bool>() {
if user_in_db.enable == new_status { if user_in_db.enable == new_status {
if let Err(why) = msg let embed = embed.field(
.channel_id format!("Auto answer the same : {}", new_status),
.say(&ctx.http, format!("Auto answer the same : {}", new_status)) String::new(),
.await false,
{ );
let builder = CreateMessage::new().embed(embed).reference_message(msg);
if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {
println!("Error sending message: {:?}", why) println!("Error sending message: {:?}", why)
} }
return Ok(()); return Ok(());
@ -59,20 +67,16 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
user_in_db.enable = new_status; user_in_db.enable = new_status;
match user_in_db.update().await { match user_in_db.update().await {
Ok(_) => { Ok(_) => {
if let Err(why) = msg let embed = embed.field("Auto answer", new_status.to_string(), false);
.channel_id let builder = CreateMessage::new().embed(embed).reference_message(msg);
.say(&ctx.http, format!("Auto answer : {}", new_status)) if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {
.await
{
println!("Error sending message: {:?}", why) println!("Error sending message: {:?}", why)
} }
} }
Err(e) => { Err(e) => {
if let Err(why) = msg let embed = embed.field("Couldn't update user in db", e.to_string(), false);
.channel_id let builder = CreateMessage::new().embed(embed).reference_message(msg);
.say(&ctx.http, "Couldn't update user in db") if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {
.await
{
println!("Error sending message: {:?}", why) println!("Error sending message: {:?}", why)
} }
println!("Error saving user image: {:?}", e); println!("Error saving user image: {:?}", e);
@ -81,14 +85,9 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
} }
return Ok(()); return Ok(());
} else { } else {
if let Err(why) = msg let embed = embed.field("Auto answer", user_in_db.enable.to_string(), false);
.channel_id let builder = CreateMessage::new().embed(embed).reference_message(msg);
.say( if let Err(why) = msg.channel_id.send_message(&ctx.http, builder).await {
&ctx.http,
format!("Auto answer enabled : {}", user_in_db.enable),
)
.await
{
println!("Error sending message: {:?}", why) println!("Error sending message: {:?}", why)
} }
} }