feat(command): 命令名长度改为可配置范围 2~4 个中文字

- 将 COMMAND_LENGTH 拆分为 COMMAND_LENGTH_MIN 和 COMMAND_LENGTH_MAX
- 正则匹配支持 2~4 个中文字,范围通过 .env 配置
- 默认最小 2 字、最大 4 字
This commit is contained in:
2026-05-02 21:13:22 +08:00
parent c6ba7e2e37
commit d4962a840d
2 changed files with 5 additions and 4 deletions

View File

@@ -34,5 +34,6 @@ QQ_API_MAX_RETRIES: int = int(os.environ.get("QQ_API_MAX_RETRIES", "2"))
# ── 命令监听 ────────────────────────────────────────────────
COMMAND_PREFIX: str = os.environ.get("COMMAND_PREFIX", "#")
COMMAND_LENGTH: int = int(os.environ.get("COMMAND_LENGTH", "4"))
COMMAND_LENGTH_MIN: int = int(os.environ.get("COMMAND_LENGTH_MIN", "2"))
COMMAND_LENGTH_MAX: int = int(os.environ.get("COMMAND_LENGTH_MAX", "4"))
COMMAND_CALLBACK_URL: str = os.environ.get("COMMAND_CALLBACK_URL", "")

View File

@@ -4,13 +4,13 @@ import re
import aiohttp
from ..config import COMMAND_CALLBACK_URL, COMMAND_LENGTH, COMMAND_PREFIX
from ..config import COMMAND_CALLBACK_URL, COMMAND_LENGTH_MAX, COMMAND_LENGTH_MIN, COMMAND_PREFIX
def build_command_pattern() -> re.Pattern:
"""构建命令匹配正则:# + N个中文字,后面可跟空格+内容或无内容。"""
"""构建命令匹配正则:# + 2~4个中文字,后面可跟空格+内容或无内容。"""
return re.compile(
rf"^{re.escape(COMMAND_PREFIX)}([\u4e00-\u9fff]{{{COMMAND_LENGTH}}})(?:\s+(.+))?$",
rf"^{re.escape(COMMAND_PREFIX)}([\u4e00-\u9fff]{{{COMMAND_LENGTH_MIN},{COMMAND_LENGTH_MAX}}})(?:\s+(.+))?$",
re.DOTALL,
)