feat(command): 支持无参数命令触发

- 正则改为允许命令后无空格和内容,如 `#测试命令` 也可触发
- 命令内容为空时 content 返回空字符串而非匹配失败
This commit is contained in:
2026-05-02 21:01:33 +08:00
parent 89461b6ed6
commit c6ba7e2e37

View File

@@ -1,4 +1,4 @@
"""命令监听处理器:匹配 #命令名+空格 格式的消息,转发到外部回调 URL 并自动回复。""" """命令监听处理器:匹配 #命令名 格式的消息,转发到外部回调 URL 并自动回复。"""
import re import re
@@ -8,9 +8,9 @@ from ..config import COMMAND_CALLBACK_URL, COMMAND_LENGTH, COMMAND_PREFIX
def build_command_pattern() -> re.Pattern: def build_command_pattern() -> re.Pattern:
"""构建命令匹配正则:# + N个中文字 + 空格""" """构建命令匹配正则:# + N个中文字,后面可跟空格+内容或无内容"""
return re.compile( return re.compile(
rf"^{re.escape(COMMAND_PREFIX)}([\u4e00-\u9fff]{{{COMMAND_LENGTH}}})\s+(.+)", rf"^{re.escape(COMMAND_PREFIX)}([\u4e00-\u9fff]{{{COMMAND_LENGTH}}})(?:\s+(.+))?$",
re.DOTALL, re.DOTALL,
) )
@@ -25,7 +25,7 @@ def parse_command(raw_message: str) -> dict | None:
return None return None
return { return {
"command": match.group(1), "command": match.group(1),
"content": match.group(2).strip(), "content": match.group(2).strip() if match.group(2) else "",
"raw_message": raw_message.strip(), "raw_message": raw_message.strip(),
} }