From 41340f0f4572b21b4b6b49958c837b409a9ad6f0 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Mon, 14 Apr 2025 22:12:44 +0300 Subject: [PATCH] remove empty messages and allow non-format messages --- src/chat.rs | 101 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 58 insertions(+), 43 deletions(-) diff --git a/src/chat.rs b/src/chat.rs index 3d52f48..0ee4d12 100644 --- a/src/chat.rs +++ b/src/chat.rs @@ -209,55 +209,70 @@ pub fn on_send_message(ctx: Arc, message: &str) -> Result<(), Box Option { - let message = sanitize_text(&message); - - let date = DATE_REGEX.captures(&message)?; - let (date, message) = ( - date.get(1)?.as_str().to_string(), - date.get(2)?.as_str().to_string(), - ); - - let (ip, message) = if let Some(message) = IP_REGEX.captures(&message) { - (Some(message.get(1)?.as_str().to_string()), message.get(2)?.as_str().to_string()) + if message.is_empty() { + None } else { - (None, message) - }; + Some( + { + let message = message.clone(); + move || -> Option { + let message = sanitize_text(&message); - let message = message - .trim_start_matches("(UNREGISTERED)") - .trim_start_matches("(UNAUTHORIZED)") - .trim_start_matches("(UNAUTHENTICATED)") - .trim() - .to_string()+" "; + let date = DATE_REGEX.captures(&message)?; + let (date, message) = ( + date.get(1)?.as_str().to_string(), + date.get(2)?.as_str().to_string(), + ); - let prefix = if enable_ip_viewing { - if let Some(ip) = ip { - format!("{}{} [{}]", ip, " ".repeat(if 15 >= ip.chars().count() {15-ip.chars().count()} else {0}), date) - } else { - format!("{} [{}]", " ".repeat(15), date) - } - } else { - format!("[{}]", date) - }; + let (ip, message) = if let Some(message) = IP_REGEX.captures(&message) { + (Some(message.get(1)?.as_str().to_string()), message.get(2)?.as_str().to_string()) + } else { + (None, message) + }; - Some(if let Some(captures) = find_username_color(&message) { - let nick = captures.0; - let content = captures.1; - let color = captures.2; + let message = message + .trim_start_matches("(UNREGISTERED)") + .trim_start_matches("(UNAUTHORIZED)") + .trim_start_matches("(UNAUTHENTICATED)") + .trim() + .to_string()+" "; + let prefix = if enable_ip_viewing { + if let Some(ip) = ip { + format!("{}{} [{}]", ip, " ".repeat(if 15 >= ip.chars().count() {15-ip.chars().count()} else {0}), date) + } else { + format!("{} [{}]", " ".repeat(15), date) + } + } else { + format!("[{}]", date) + }; + + Some(if let Some(captures) = find_username_color(&message) { + let nick = captures.0; + let content = captures.1; + let color = captures.2; + + format!( + "{} {} {}", + prefix.white().dimmed(), + format!("<{}>", nick).color(color).bold(), + content.white().blink() + ) + } else { + format!( + "{} {}", + prefix.white().dimmed(), + message.white().blink() + ) + }) + }() + }.unwrap_or_else(|| { format!( - "{} {} {}", - prefix.white().dimmed(), - format!("<{}>", nick).color(color).bold(), - content.white().blink() - ) - } else { - format!( - "{} {}", - prefix.white().dimmed(), - message.white().blink() - ) - }) + "{}", + message.white().blink() + ) + })) + } } pub fn find_username_color(message: &str) -> Option<(String, String, Color)> {