From 1f5063b66f6c54cc19745bde47af24a784731a80 Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Sun, 21 Aug 2022 03:53:06 +0200 Subject: [PATCH] feat: only cure users on name change --- src/events/guild_member_addition.rs | 4 ++-- src/events/guild_member_update.rs | 4 ++-- src/utils/decancer.rs | 21 +++++++++++++++++---- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/events/guild_member_addition.rs b/src/events/guild_member_addition.rs index 5bd01d2..62ae99f 100644 --- a/src/events/guild_member_addition.rs +++ b/src/events/guild_member_addition.rs @@ -2,5 +2,5 @@ use super::*; use crate::utils::decancer::cure; pub async fn guild_member_addition(ctx: &serenity::Context, new_member: &serenity::Member) { - cure(ctx, new_member).await; -} + cure(ctx, &None, new_member).await; +} \ No newline at end of file diff --git a/src/events/guild_member_update.rs b/src/events/guild_member_update.rs index ddeb856..d44b611 100644 --- a/src/events/guild_member_update.rs +++ b/src/events/guild_member_update.rs @@ -3,8 +3,8 @@ use crate::utils::decancer::cure; pub async fn guild_member_update( ctx: &serenity::Context, - _old_if_available: &Option, + old_if_available: &Option, new: &serenity::Member, ) { - cure(ctx, new).await; + cure(ctx, old_if_available, new).await; } diff --git a/src/utils/decancer.rs b/src/utils/decancer.rs index 3132711..dec7789 100644 --- a/src/utils/decancer.rs +++ b/src/utils/decancer.rs @@ -1,20 +1,33 @@ use ::decancer::Decancer; -use tracing::{error, info}; +use tracing::{error, info, trace}; use super::*; const DECANCER: Decancer = Decancer::new(); -pub async fn cure(ctx: &serenity::Context, member: &serenity::Member) { - println!("Curing {}", member.display_name()); +pub async fn cure( + ctx: &serenity::Context, + old_if_available: &Option, + member: &serenity::Member, +) { let name = member.display_name().to_string(); + if let Some(old) = old_if_available { + if old.display_name().to_string() == name { + trace!( + "Skipping decancer for {} because their name hasn't changed", + member.user.tag() + ); + return; + } + } + let mut cured_name = DECANCER .cure(&name) .replace(|c: char| !(c == ' ' || c.is_ascii_alphanumeric()), ""); if cured_name.len() == 0 { - cured_name = "ReVanced user" .to_string(); + cured_name = "ReVanced user".to_string(); } if name.to_lowercase() == cured_name {