diff --git a/Cargo.lock b/Cargo.lock index c322e11..52974c7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1996,7 +1996,7 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "payphone" -version = "4.4.0" +version = "4.4.1" dependencies = [ "anyhow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index dd51340..754feb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "payphone" -version = "4.4.0" +version = "4.4.1" edition = "2024" default-run = "payphone" diff --git a/src/database/models.rs b/src/database/models.rs index 3dce80d..dd2d18f 100644 --- a/src/database/models.rs +++ b/src/database/models.rs @@ -24,6 +24,7 @@ use twilight_model::{ id::Id, user::User as TwilightUser, }; +use twilight_validate::request::{ValidationError, ValidationErrorType, webhook_username}; use crate::{ colors::AvatarColorFetchingRequest, @@ -1912,14 +1913,25 @@ impl<'a> Object<'a> for Participant { } } -fn make_name_valid(name: String) -> String { - if name.len() == 1 { - format!("{name}-") - } else if name.len() > 80 { - format!("{name:.80}") - } else { - name +fn make_name_valid(mut name: String) -> String { + if let Err(error) = webhook_username(&name) { + match error.kind() { + ValidationErrorType::WebhookUsername { len, substring } => { + if let Some(len) = len { + if *len < 2 { + name = format!("{name}--"); + } else { + name = format!("{name:.80}"); + } + } else { + name = "Invalid name".into(); + } + } + _ => {} + } } + + name } impl Participant {