feat: 兼容指令名和第一个参数之间没有空格的情况 (#2650)

插件中@filter.command的指令在用户输入“命令+参数” 无空格隔开时无法处理,但只要稍微改动几行代码就可以兼容
This commit is contained in:
Zhalslar
2025-09-12 15:40:37 +08:00
committed by GitHub
parent d24902c66d
commit 9bfa726107
+9 -3
View File
@@ -7,7 +7,6 @@ from astrbot.core.config import AstrBotConfig
from .custom_filter import CustomFilter
from ..star_handler import StarHandlerMetadata
class GreedyStr(str):
"""标记指令完成其他参数接收后的所有剩余文本。"""
@@ -153,10 +152,17 @@ class CommandFilter(HandlerFilter):
_full = f"{parent_command_name} {candidate}"
else:
_full = candidate
if message_str.startswith(f"{_full} ") or message_str == _full:
message_str = message_str[len(_full) :].strip()
if message_str == _full:
# 完全等于命令名 → 没参数
message_str = ""
ok = True
break
elif message_str.startswith(_full):
# 命令名后面无论是空格还是直接连参数都可以
message_str = message_str[len(_full):].lstrip()
ok = True
break
if not ok:
return False