From d4962a840da732812c72c7ff8f3fb4f4db8259d9 Mon Sep 17 00:00:00 2001 From: zhilv Date: Sat, 2 May 2026 21:13:22 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(command):=20=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E5=90=8D=E9=95=BF=E5=BA=A6=E6=94=B9=E4=B8=BA=E5=8F=AF=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=8C=83=E5=9B=B4=202~4=20=E4=B8=AA=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 COMMAND_LENGTH 拆分为 COMMAND_LENGTH_MIN 和 COMMAND_LENGTH_MAX - 正则匹配支持 2~4 个中文字,范围通过 .env 配置 - 默认最小 2 字、最大 4 字 --- config.py | 3 ++- handlers/command.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config.py b/config.py index 7f245ac..28d6416 100644 --- a/config.py +++ b/config.py @@ -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", "") diff --git a/handlers/command.py b/handlers/command.py index 9197d57..545f705 100644 --- a/handlers/command.py +++ b/handlers/command.py @@ -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, )