✨ feat(command): 支持无参数命令触发
- 正则改为允许命令后无空格和内容,如 `#测试命令` 也可触发 - 命令内容为空时 content 返回空字符串而非匹配失败
This commit is contained in:
@@ -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(),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user