diff --git a/.tasks/2025-10-29_1_add-user-register.md b/.tasks/2025-10-29_1_add-user-register.md index 666665b..e8537ba 100644 --- a/.tasks/2025-10-29_1_add-user-register.md +++ b/.tasks/2025-10-29_1_add-user-register.md @@ -204,6 +204,15 @@ def _process_gift_command(self, args: str, sender_id: int) -> str: - 阻碍因素:无 - 状态:未确认 +## 2025-10-29_16:00:48 +- 已修改:utils/parser.py +- 更改: + - 调整 COMMAND_MAP 顺序,将 .register 放在 .r 之前(避免前缀匹配冲突) + - 修复 AT_PATTERN 正则表达式:从 `@\s*\S+\s+(.+)` 改为 `@[^\s]+\s+(.+)`(正确提取@后的完整指令) +- 原因:修复 .register 被错误识别为 dice 的问题,以及@前缀处理不完整的问题 +- 阻碍因素:无 +- 状态:未确认 + # 最终审查 [等待实施] diff --git a/utils/parser.py b/utils/parser.py index a21f466..d10e69c 100644 --- a/utils/parser.py +++ b/utils/parser.py @@ -11,6 +11,10 @@ class CommandParser: # 指令映射表 COMMAND_MAP = { + # 用户注册系统(必须在骰娘之前) + '.register': 'register', + '.注册': 'register', + # 骰娘 '.r': 'dice', '.roll': 'dice', @@ -63,14 +67,10 @@ class CommandParser: # 统计 '.stats': 'stats', '.统计': 'stats', - - # 用户注册系统 - '.register': 'register', - '.注册': 'register', } # 机器人名称模式(用于从@消息中提取) - AT_PATTERN = re.compile(r'@\s*\S+\s+(.+)', re.DOTALL) + AT_PATTERN = re.compile(r'@[^\s]+\s+(.+)', re.DOTALL) @classmethod def parse(cls, content: str) -> Optional[Tuple[str, str]]: