remove empty messages and allow non-format messages

This commit is contained in:
MeexReay 2025-04-14 22:12:44 +03:00
parent 52720c2748
commit 41340f0f45

View File

@ -209,55 +209,70 @@ pub fn on_send_message(ctx: Arc<Context>, message: &str) -> Result<(), Box<dyn E
} }
pub fn format_message(enable_ip_viewing: bool, message: String) -> Option<String> { pub fn format_message(enable_ip_viewing: bool, message: String) -> Option<String> {
let message = sanitize_text(&message); if message.is_empty() {
None
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())
} else { } else {
(None, message) Some(
}; {
let message = message.clone();
move || -> Option<String> {
let message = sanitize_text(&message);
let message = message let date = DATE_REGEX.captures(&message)?;
.trim_start_matches("(UNREGISTERED)") let (date, message) = (
.trim_start_matches("(UNAUTHORIZED)") date.get(1)?.as_str().to_string(),
.trim_start_matches("(UNAUTHENTICATED)") date.get(2)?.as_str().to_string(),
.trim() );
.to_string()+" ";
let prefix = if enable_ip_viewing { let (ip, message) = if let Some(message) = IP_REGEX.captures(&message) {
if let Some(ip) = ip { (Some(message.get(1)?.as_str().to_string()), message.get(2)?.as_str().to_string())
format!("{}{} [{}]", ip, " ".repeat(if 15 >= ip.chars().count() {15-ip.chars().count()} else {0}), date) } else {
} else { (None, message)
format!("{} [{}]", " ".repeat(15), date) };
}
} else {
format!("[{}]", date)
};
Some(if let Some(captures) = find_username_color(&message) { let message = message
let nick = captures.0; .trim_start_matches("(UNREGISTERED)")
let content = captures.1; .trim_start_matches("(UNAUTHORIZED)")
let color = captures.2; .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!( format!(
"{} {} {}", "{}",
prefix.white().dimmed(), message.white().blink()
format!("<{}>", nick).color(color).bold(), )
content.white().blink() }))
) }
} else {
format!(
"{} {}",
prefix.white().dimmed(),
message.white().blink()
)
})
} }
pub fn find_username_color(message: &str) -> Option<(String, String, Color)> { pub fn find_username_color(message: &str) -> Option<(String, String, Color)> {