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
@@ -8,9 +8,9 @@ from ..config import COMMAND_CALLBACK_URL, COMMAND_LENGTH, COMMAND_PREFIX
def build_command_pattern() -> re.Pattern:
"""构建命令匹配正则:# + N个中文字 + 空格"""
"""构建命令匹配正则:# + N个中文字,后面可跟空格+内容或无内容"""
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,
)
@@ -25,7 +25,7 @@ def parse_command(raw_message: str) -> dict | None:
return None
return {
"command": match.group(1),
"content": match.group(2).strip(),
"content": match.group(2).strip() if match.group(2) else "",
"raw_message": raw_message.strip(),
}