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::{
all::Message,
builder::{CreateEmbed, CreateEmbedFooter, CreateMessage},
client::Context,
framework::standard::{macros::command, Args, CommandResult},
model::colour,
};
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,
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 =
match UserImage::find_by_server_id_user_id(&guild.get(), &msg.author.id.get()).await {
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 {
Ok(_) => user_in_db,
Err(e) => {
if let Err(why) = msg
.channel_id
.say(&ctx.http, "Couldn't create user in db")
.await
{
let embed = embed
.field("Could't create user in db", e.to_string(), false)
.color(colour::Color::RED);
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 saving user image: {:?}", e);
@ -34,11 +40,11 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
}
}
Err(e) => {
if let Err(why) = msg
.channel_id
.say(&ctx.http, "Error finding user image")
.await
{
let embed = embed
.field("Error finding user image", e.to_string(), false)
.color(colour::Color::RED);
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 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 user_in_db.enable == new_status {
if let Err(why) = msg
.channel_id
.say(&ctx.http, format!("Auto answer the same : {}", new_status))
.await
{
let embed = embed.field(
format!("Auto answer the same : {}", new_status),
String::new(),
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)
}
return Ok(());
@ -59,20 +67,16 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
user_in_db.enable = new_status;
match user_in_db.update().await {
Ok(_) => {
if let Err(why) = msg
.channel_id
.say(&ctx.http, format!("Auto answer : {}", new_status))
.await
{
let embed = embed.field("Auto answer", new_status.to_string(), 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)
}
}
Err(e) => {
if let Err(why) = msg
.channel_id
.say(&ctx.http, "Couldn't update user in db")
.await
{
let embed = embed.field("Couldn't update user in db", e.to_string(), 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 saving user image: {:?}", e);
@ -81,14 +85,9 @@ pub async fn enable(ctx: &Context, msg: &Message, mut args: Args) -> CommandResu
}
return Ok(());
} else {
if let Err(why) = msg
.channel_id
.say(
&ctx.http,
format!("Auto answer enabled : {}", user_in_db.enable),
)
.await
{
let embed = embed.field("Auto answer", user_in_db.enable.to_string(), 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)
}
}