From 0fb91e0172e188cd54b97ef3277ac82bcc710a64 Mon Sep 17 00:00:00 2001 From: Arthur <128254439+arthur-pbty@users.noreply.github.com> Date: Sat, 11 Apr 2026 15:01:47 +0200 Subject: [PATCH] fix(prefix): prevent multiple prefix usage like ++++ping (#1) --- src/commands/automation/piconly.rs | 7 +++---- src/commands/mod.rs | 2 +- src/events/message.rs | 7 +++---- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/commands/automation/piconly.rs b/src/commands/automation/piconly.rs index 81cd7e5..fafb5b4 100644 --- a/src/commands/automation/piconly.rs +++ b/src/commands/automation/piconly.rs @@ -28,11 +28,10 @@ fn has_only_photo_attachments(msg: &Message) -> bool { } fn is_piconly_command_message(content: &str, prefix: &str) -> bool { - if !content.starts_with(prefix) { + let Some(without_prefix) = content.strip_prefix(prefix) else { return false; - } - - let without_prefix = content.trim_start_matches(prefix).trim(); + }; + let without_prefix = without_prefix.trim(); without_prefix .split_whitespace() .next() diff --git a/src/commands/mod.rs b/src/commands/mod.rs index cafbeeb..3e39cd6 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -662,7 +662,7 @@ pub fn command_metadata_by_key(key: &str) -> Option { } pub fn resolve_default_alias(alias: &str) -> Option<&'static str> { - let normalized = alias.trim().trim_start_matches('+').to_lowercase(); + let normalized = alias.trim().to_lowercase(); all_command_metadata().into_iter().find_map(|meta| { if meta .default_aliases diff --git a/src/events/message.rs b/src/events/message.rs index 1fc77db..4d134f5 100644 --- a/src/events/message.rs +++ b/src/events/message.rs @@ -110,11 +110,10 @@ pub async fn handle_message(ctx: &Context, msg: &Message) { return; } - if !content.starts_with(&prefix_value) { + let Some(without_prefix) = content.strip_prefix(&prefix_value) else { return; - } - - let without_prefix = content.trim_start_matches(&prefix_value).trim(); + }; + let without_prefix = without_prefix.trim(); if without_prefix.is_empty() { return; }