修复指令解析错误
This commit is contained in:
@@ -94,11 +94,20 @@ class CommandParser:
|
||||
if at_match:
|
||||
content = at_match.group(1).strip()
|
||||
|
||||
# 检查是否以指令开头
|
||||
for cmd_prefix, game_type in cls.COMMAND_MAP.items():
|
||||
if content == cmd_prefix:
|
||||
# 返回游戏类型和完整指令
|
||||
return game_type, content
|
||||
# 拦截全角空格与全角标点(不允许)
|
||||
# 范围包含:全角空格\u3000、全角标点\uFF01-\uFF60、兼容区\uFFE0-\uFFEE
|
||||
if re.search(r"[\u3000\uFF01-\uFF60\uFFE0-\uFFEE]", content):
|
||||
logger.debug(f"包含全角字符,忽略: {content}")
|
||||
return None
|
||||
|
||||
# 大小写不敏感匹配(仅用于匹配,不改变返回的原始内容)
|
||||
content_lower = content.lower()
|
||||
|
||||
# 使用最长前缀优先,避免 .r 误匹配 .roll 等更长前缀
|
||||
command_keys_sorted = sorted(cls.COMMAND_MAP.keys(), key=len, reverse=True)
|
||||
for cmd_prefix in command_keys_sorted:
|
||||
if content_lower.startswith(cmd_prefix.lower()):
|
||||
return cls.COMMAND_MAP[cmd_prefix], content
|
||||
|
||||
# 没有匹配的指令
|
||||
logger.debug(f"未识别的指令: {content}")
|
||||
|
||||
Reference in New Issue
Block a user