diff --git a/src/groups/calls/mod.rs b/src/groups/calls/mod.rs index 096e9c1..a5c4579 100644 --- a/src/groups/calls/mod.rs +++ b/src/groups/calls/mod.rs @@ -21,25 +21,35 @@ pub struct DisplayProfile { pub mask: Option, } +fn make_name_valid(name: String) -> String { + if name.len() == 1 { + format!("{name}\u{2800}") + } else if name.len() > 80 { + format!("{name:.80}") + } else { + name + } +} + fn get_display_profile(event: &MessageCreate) -> DisplayProfile { let member = event.member.clone(); - let name = if let Some(nick) = &member.clone().and_then(|member| member.nick) { + let name = if let Some(nick) = &member.clone().and_then(|member| member.nick.map(make_name_valid)) { if webhook_username(nick).is_err() { "Invalid Nickname".to_string() } else { nick.clone() } - } else if let Some(name) = &event.author.global_name { - if webhook_username(name).is_err() { + } else if let Some(name) = event.author.global_name.clone().map(make_name_valid) { + if webhook_username(&name).is_err() { "Invalid Global Name".to_string() } else { - name.clone() + name } - } else if webhook_username(&event.author.name).is_err() { + } else if webhook_username(make_name_valid(event.author.name.clone())).is_err() { "Invalid Username".to_string() } else { - event.author.name.clone() + make_name_valid(event.author.name.clone()) }; let avatar_hash = member