diff --git a/Cargo.lock b/Cargo.lock index 66c9dbf..fdee68e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1431,7 +1431,7 @@ checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "payphone" -version = "4.0.5" +version = "4.0.6" dependencies = [ "async-trait", "axum", diff --git a/Cargo.toml b/Cargo.toml index 82e4701..cb61477 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "payphone" -version = "4.0.5" +version = "4.0.6" edition = "2024" default-run = "payphone" diff --git a/src/discord/sanitizing.rs b/src/discord/sanitizing.rs index 21d617a..64064c3 100644 --- a/src/discord/sanitizing.rs +++ b/src/discord/sanitizing.rs @@ -11,6 +11,12 @@ pub trait SanitizeDiscordMarkdown { /// Returns: /// [`String`] - The sanitized string. fn sanitize(&self, hard: bool) -> String; + + /// Sanitizes mentions in a string. + /// + /// Returns: + /// [`String`] - The sanitized string. + fn sanitize_mentions(&self) -> String; } impl SanitizeDiscordMarkdown for T @@ -40,7 +46,13 @@ where }; // Now block ping attempts — break mentions - escaped + escaped.sanitize_mentions() + } + + fn sanitize_mentions(&self) -> String { + let input = self.to_string(); + + input .replace("@everyone", "@\u{200B}everyone") .replace("@here", "@\u{200B}here") .replace("<@", "<@\u{200B}") // user mentions diff --git a/src/groups/calls/events.rs b/src/groups/calls/events.rs index db5c973..2c89874 100644 --- a/src/groups/calls/events.rs +++ b/src/groups/calls/events.rs @@ -247,7 +247,7 @@ impl OnMessageHandler for CallMessageHandler { .allowed_mentions(None) .username(&profile.name) .avatar_url(&profile.avatar_url) - .content(&content) + .content(&content.sanitize_mentions()) .embeds(&embeds) .wait() .await