feat: commit before reinstall
This commit is contained in:
parent
8af7c67a00
commit
24b9d67198
@ -1,5 +1,5 @@
|
||||
use crate::botv2::init::{Context,Error};
|
||||
use poise::{serenity_prelude::{CreateEmbed, CreateEmbedFooter, CreateMessage}, CreateReply};
|
||||
use crate::{botv2::init::{Context,Error}, domain::meme::change_auto_meme::change_auto_meme};
|
||||
use poise::CreateReply;
|
||||
use tracing::instrument;
|
||||
|
||||
/// Enable/Disable auto answer available meme keywords
|
||||
@ -9,35 +9,22 @@ use tracing::instrument;
|
||||
prefix_command,
|
||||
category = "meme"
|
||||
)]
|
||||
pub async fn enable(ctx: Context<'_>) -> Result<(), Error> {
|
||||
pub async fn enable(
|
||||
ctx: Context<'_>,
|
||||
#[description = "Enable or diable "] enable: Option<bool>
|
||||
) -> 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 guild = match ctx.guild_id() {
|
||||
Some(guild) => guild,
|
||||
None => return Ok(()),
|
||||
};
|
||||
let embed = change_auto_meme(enable, ctx.author().id.get(), guild.get()).await;
|
||||
let mut reply = CreateReply::default();
|
||||
reply.embeds = embed_vec.collect();
|
||||
if let Ok(embed) = embed {
|
||||
reply.embeds = embed;
|
||||
}
|
||||
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
|
||||
}
|
@ -1,3 +1,7 @@
|
||||
use poise::serenity_prelude::{model::colour, CreateEmbed, CreateEmbedFooter};
|
||||
use tracing::instrument;
|
||||
|
||||
use crate::db::user_image::User;
|
||||
|
||||
pub enum MemeChangeAutoMemeError {
|
||||
UserNotFound,
|
||||
@ -5,4 +9,61 @@ pub enum MemeChangeAutoMemeError {
|
||||
UserUpdateError,
|
||||
UserFindError,
|
||||
UnknownError(String),
|
||||
}
|
||||
|
||||
#[instrument(level = "info")]
|
||||
pub async fn change_auto_meme(
|
||||
enable: Option<bool>,
|
||||
user_id: u64,
|
||||
guild_id: u64,
|
||||
) -> Result<Vec<CreateEmbed>, MemeChangeAutoMemeError> {
|
||||
let footer = CreateEmbedFooter::new("WeeboBot");
|
||||
let mut embed = CreateEmbed::new()
|
||||
.title("Enable/Disable auto meme answer")
|
||||
.footer(footer);
|
||||
let mut user_in_db: User =
|
||||
match User::find_by_server_id_user_id(&guild_id, &user_id).await {
|
||||
Ok(Some(user_in_db)) => user_in_db.clone(),
|
||||
Ok(None) => {
|
||||
let user_in_db = User::new(guild_id, user_id, false).unwrap();
|
||||
match user_in_db.create().await {
|
||||
Ok(_) => user_in_db,
|
||||
Err(e) => {
|
||||
let embed = embed
|
||||
.field("Could't create user in db", e.to_string(), false)
|
||||
.color(colour::Color::RED);
|
||||
return Ok(vec![embed]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
let embed = embed
|
||||
.field("Error finding user image", e.to_string(), false)
|
||||
.color(colour::Color::RED);
|
||||
return Ok(vec![embed]);
|
||||
}
|
||||
};
|
||||
|
||||
if let Some(new_status) = enable {
|
||||
if user_in_db.enable == new_status {
|
||||
let embed = embed.field(
|
||||
format!("Auto answer the same : {}", new_status),
|
||||
String::new(),
|
||||
false,
|
||||
);
|
||||
return Ok(vec![embed]);
|
||||
}
|
||||
user_in_db.enable = new_status;
|
||||
match user_in_db.update().await {
|
||||
Ok(_) => {
|
||||
embed = embed.field("Auto answer", new_status.to_string(), false);
|
||||
}
|
||||
Err(e) => {
|
||||
embed = embed.field("Couldn't update user in db", e.to_string(), false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
embed = embed.field("Auto answer", user_in_db.enable.to_string(), false);
|
||||
}
|
||||
return Ok(vec![embed]);
|
||||
}
|
Loading…
Reference in New Issue
Block a user