feat: commit before reinstall
This commit is contained in:
parent
8af7c67a00
commit
24b9d67198
@ -1,5 +1,5 @@
|
|||||||
use crate::botv2::init::{Context,Error};
|
use crate::{botv2::init::{Context,Error}, domain::meme::change_auto_meme::change_auto_meme};
|
||||||
use poise::{serenity_prelude::{CreateEmbed, CreateEmbedFooter, CreateMessage}, CreateReply};
|
use poise::CreateReply;
|
||||||
use tracing::instrument;
|
use tracing::instrument;
|
||||||
|
|
||||||
/// Enable/Disable auto answer available meme keywords
|
/// Enable/Disable auto answer available meme keywords
|
||||||
@ -9,35 +9,22 @@ use tracing::instrument;
|
|||||||
prefix_command,
|
prefix_command,
|
||||||
category = "meme"
|
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");
|
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 guild = match ctx.guild_id() {
|
||||||
let list_value: Vec<(String, String, bool)> = config_img
|
Some(guild) => guild,
|
||||||
.keyword
|
None => return Ok(()),
|
||||||
.iter()
|
};
|
||||||
.map(|x| (x.value.clone().join(", "), String::new(), true))
|
let embed = change_auto_meme(enable, ctx.author().id.get(), guild.get()).await;
|
||||||
.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 mut reply = CreateReply::default();
|
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 {
|
if let Err(why) = ctx.send(reply).await {
|
||||||
tracing::error!("Error sending message: {:?}", why);
|
tracing::error!("Error sending message: {:?}", why);
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
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 {
|
pub enum MemeChangeAutoMemeError {
|
||||||
UserNotFound,
|
UserNotFound,
|
||||||
@ -5,4 +9,61 @@ pub enum MemeChangeAutoMemeError {
|
|||||||
UserUpdateError,
|
UserUpdateError,
|
||||||
UserFindError,
|
UserFindError,
|
||||||
UnknownError(String),
|
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