feat: only cure users on name change

This commit is contained in:
oSumAtrIX 2022-08-21 03:53:06 +02:00
parent 5519bb2ee5
commit 1f5063b66f
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
3 changed files with 21 additions and 8 deletions

View File

@ -2,5 +2,5 @@ use super::*;
use crate::utils::decancer::cure; use crate::utils::decancer::cure;
pub async fn guild_member_addition(ctx: &serenity::Context, new_member: &serenity::Member) { pub async fn guild_member_addition(ctx: &serenity::Context, new_member: &serenity::Member) {
cure(ctx, new_member).await; cure(ctx, &None, new_member).await;
} }

View File

@ -3,8 +3,8 @@ use crate::utils::decancer::cure;
pub async fn guild_member_update( pub async fn guild_member_update(
ctx: &serenity::Context, ctx: &serenity::Context,
_old_if_available: &Option<serenity::Member>, old_if_available: &Option<serenity::Member>,
new: &serenity::Member, new: &serenity::Member,
) { ) {
cure(ctx, new).await; cure(ctx, old_if_available, new).await;
} }

View File

@ -1,14 +1,27 @@
use ::decancer::Decancer; use ::decancer::Decancer;
use tracing::{error, info}; use tracing::{error, info, trace};
use super::*; use super::*;
const DECANCER: Decancer = Decancer::new(); const DECANCER: Decancer = Decancer::new();
pub async fn cure(ctx: &serenity::Context, member: &serenity::Member) { pub async fn cure(
println!("Curing {}", member.display_name()); ctx: &serenity::Context,
old_if_available: &Option<serenity::Member>,
member: &serenity::Member,
) {
let name = member.display_name().to_string(); 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 let mut cured_name = DECANCER
.cure(&name) .cure(&name)
.replace(|c: char| !(c == ' ' || c.is_ascii_alphanumeric()), ""); .replace(|c: char| !(c == ' ' || c.is_ascii_alphanumeric()), "");