From bb72d6252e5a8ba79725b79ff3dc87f6c0832c75 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Thu, 6 Jul 2023 23:11:41 +0200 Subject: [PATCH] improve code quality --- Cargo.lock | 2 +- src/commands/configuration.rs | 13 +++++------ src/events/guild_member_addition.rs | 2 +- src/events/guild_member_update.rs | 2 +- src/events/mod.rs | 12 ++++++++++ src/events/ready.rs | 3 +-- src/utils/{decancer.rs => cure_names.rs} | 29 ++++++------------------ src/utils/mod.rs | 2 +- 8 files changed, 30 insertions(+), 35 deletions(-) rename src/utils/{decancer.rs => cure_names.rs} (68%) diff --git a/Cargo.lock b/Cargo.lock index 1246ba5..791e3b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1356,7 +1356,7 @@ dependencies = [ [[package]] name = "revanced-discord-bot" -version = "2.5.1" +version = "2.6.1" dependencies = [ "base64 0.21.2", "bson", diff --git a/src/commands/configuration.rs b/src/commands/configuration.rs index c95177d..7f74ed6 100644 --- a/src/commands/configuration.rs +++ b/src/commands/configuration.rs @@ -1,20 +1,19 @@ use tracing::debug; use crate::utils::bot::load_configuration; -use crate::utils::decancer::reinit_censor; +use crate::utils::cure_names::init_censor; use crate::{Context, Error}; /// Reload the Discord bot. #[poise::command(slash_command)] pub async fn reload(ctx: Context<'_>) -> Result<(), Error> { - // Update the configuration let configuration = load_configuration(); - // Use the embed color from the updated configuration - let embed_color = configuration.general.embed_color; - // Also save the new configuration to the user data - ctx.data().write().await.configuration = configuration; - reinit_censor(ctx.serenity_context()).await; + let embed_color = configuration.general.embed_color; + + init_censor(&configuration.general.censor); + + ctx.data().write().await.configuration = configuration; debug!("{} reloaded the configuration.", ctx.author().name); diff --git a/src/events/guild_member_addition.rs b/src/events/guild_member_addition.rs index 5f3ba0e..0966eee 100644 --- a/src/events/guild_member_addition.rs +++ b/src/events/guild_member_addition.rs @@ -1,5 +1,5 @@ use super::*; -use crate::utils::decancer::cure; +use crate::utils::cure_names::cure; use crate::utils::moderation::mute_on_join; pub async fn guild_member_addition(ctx: &serenity::Context, new_member: &mut serenity::Member) { diff --git a/src/events/guild_member_update.rs b/src/events/guild_member_update.rs index d44b611..d3e34c7 100644 --- a/src/events/guild_member_update.rs +++ b/src/events/guild_member_update.rs @@ -1,5 +1,5 @@ use super::*; -use crate::utils::decancer::cure; +use crate::utils::cure_names::cure; pub async fn guild_member_update( ctx: &serenity::Context, diff --git a/src/events/mod.rs b/src/events/mod.rs index be8ce21..0b15381 100644 --- a/src/events/mod.rs +++ b/src/events/mod.rs @@ -3,6 +3,8 @@ use std::sync::Arc; use poise::serenity_prelude::{self as serenity, Mutex, RwLock, ShardManager, UserId}; use tracing::log::error; +use crate::utils::bot::get_data_lock; +use crate::utils::cure_names::init_censor; use crate::{Data, Error}; mod guild_member_addition; @@ -91,6 +93,16 @@ impl serenity::EventHandler for Handler>> { async fn ready(&self, ctx: serenity::Context, ready: serenity::Ready) { *self.bot_id.write().await = Some(ready.user.id); + init_censor( + &get_data_lock(&ctx) + .await + .read() + .await + .configuration + .general + .censor, + ); + ready::load_muted_members(&ctx, &ready).await; } diff --git a/src/events/ready.rs b/src/events/ready.rs index cd8c30f..d5cf8b4 100644 --- a/src/events/ready.rs +++ b/src/events/ready.rs @@ -8,7 +8,6 @@ use crate::utils::moderation::queue_unmute_member; pub async fn load_muted_members(ctx: &serenity::Context, _: &serenity::Ready) { let data = get_data_lock(ctx).await; let data = &mut *data.write().await; - let mute_role_id = data.configuration.general.mute.role; let mut cursor = data .database @@ -38,7 +37,7 @@ pub async fn load_muted_members(ctx: &serenity::Context, _: &serenity::Ready) { data.database.clone(), serenity::GuildId(guild_id), serenity::UserId(user_id), - mute_role_id, + data.configuration.general.mute.role, amount_left as u64, // i64 as u64 is handled properly here ), ); diff --git a/src/utils/decancer.rs b/src/utils/cure_names.rs similarity index 68% rename from src/utils/decancer.rs rename to src/utils/cure_names.rs index 5c4d746..315b64b 100644 --- a/src/utils/decancer.rs +++ b/src/utils/cure_names.rs @@ -3,27 +3,23 @@ use lazy_static::lazy_static; use once_cell::sync::OnceCell; use tracing::{error, info, trace}; -use super::{bot, serenity}; +use super::serenity; +use crate::model::application::Censor as CensorConfiguration; lazy_static! { static ref CENSOR: OnceCell = OnceCell::new(); } -// Initialize the censor -async fn censor(ctx: &serenity::Context) -> &'static Censor { - let data_lock = bot::get_data_lock(ctx).await; - let censor_config = &data_lock.read().await.configuration.general.censor; - let additions = &censor_config.additions; - let removals = &censor_config.removals; - +// Initialize censor with the given configuration. +pub fn init_censor(configuration: &CensorConfiguration) -> &'static Censor { CENSOR.get_or_init(|| { let mut censor = censor::Standard; - for addition in additions { + for addition in &configuration.additions { censor += addition; } - for removal in removals { + for removal in &configuration.removals { censor -= removal; } @@ -31,15 +27,6 @@ async fn censor(ctx: &serenity::Context) -> &'static Censor { }) } -// Reinitialize the censor when the configuration is reloaded -pub async fn reinit_censor(ctx: &serenity::Context) { - match CENSOR.set(censor(ctx).await.clone()) { - Ok(_) => info!("Reinitialized censor"), - Err(_) => error!("Failed to reinitialize censor"), - } -} - - pub async fn cure( ctx: &serenity::Context, old_if_available: &Option, @@ -49,8 +36,6 @@ pub async fn cure( trace!("Skipping decancer for bot {}.", member.user.tag()); return; } - - let censor = censor(ctx).await; let name = member.display_name().to_string(); @@ -71,7 +56,7 @@ pub async fn cure( if cured_name.is_empty() || !cured_name.starts_with(|c: char| c.is_ascii_alphabetic()) - || censor.check(&cured_name) + || CENSOR.get().unwrap().check(&cured_name) { cured_name = "ReVanced member".to_string(); } diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 31e887d..c5d6dc3 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -3,7 +3,7 @@ use poise::serenity_prelude::{self as serenity, Member, RoleId}; pub mod bot; pub mod code_embed; -pub mod decancer; +pub mod cure_names; pub mod macros; pub mod message; pub mod message_response;