From 7a4759853849ce60f892c1eee2c50ea62c728c48 Mon Sep 17 00:00:00 2001 From: Soulter <905617992@qq.com> Date: Sat, 27 Sep 2025 23:35:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8C=87=E4=BB=A4?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fixes: #2897 --- astrbot/core/star/filter/command.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/astrbot/core/star/filter/command.py b/astrbot/core/star/filter/command.py index d6b34d832..d8a1eb22e 100755 --- a/astrbot/core/star/filter/command.py +++ b/astrbot/core/star/filter/command.py @@ -149,12 +149,6 @@ class CommandFilter(HandlerFilter): ] return self._cmpl_cmd_names - def startswith(self, message_str: str) -> bool: - for full_cmd in self.get_complete_command_names(): - if message_str.startswith(f"{full_cmd} ") or message_str == full_cmd: - return True - return False - def equals(self, message_str: str) -> bool: for full_cmd in self.get_complete_command_names(): if message_str == full_cmd: @@ -170,7 +164,12 @@ class CommandFilter(HandlerFilter): # 检查是否以指令开头 message_str = re.sub(r"\s+", " ", event.get_message_str().strip()) - if not self.startswith(message_str): + ok = False + for full_cmd in self.get_complete_command_names(): + if message_str.startswith(f"{full_cmd} ") or message_str == full_cmd: + ok = True + message_str = message_str[len(full_cmd) :].strip() + if not ok: return False # 分割为列表