From 69b5908445314c31f5ef72d8d28c26cf6964be9b Mon Sep 17 00:00:00 2001 From: pi-agent Date: Sat, 14 Mar 2026 02:17:20 +0800 Subject: [PATCH] refactor: narrow trpg roll message matching --- konabot/plugins/trpg_roll/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/konabot/plugins/trpg_roll/__init__.py b/konabot/plugins/trpg_roll/__init__.py index 7d72ec1..4c754d2 100644 --- a/konabot/plugins/trpg_roll/__init__.py +++ b/konabot/plugins/trpg_roll/__init__.py @@ -1,7 +1,10 @@ +import re + import nonebot from nonebot.adapters import Event from nonebot_plugin_alconna import UniMessage, UniMsg +from konabot.common.nb import match_keyword from konabot.common.permsys import register_default_allow_permission, require_permission from konabot.plugins.trpg_roll.core import RollError, roll_expression @@ -11,18 +14,15 @@ register_default_allow_permission(PERMISSION_KEY) matcher = nonebot.on_message( - rule=require_permission(PERMISSION_KEY), + rule=match_keyword.match_keyword(re.compile(r"^roll(?:\s+.+)?$", re.I)) + & require_permission(PERMISSION_KEY), ) @matcher.handle() async def _(event: Event, msg: UniMsg): text = msg.extract_plain_text().strip() - lowered = text.lower() - if lowered == "roll" or lowered.startswith("roll "): - expr = text[4:].strip() - else: - return + expr = text[4:].strip() if not expr: await UniMessage.text("用法:roll 3d6 / roll d20+5 / roll 2d8+1d4+3 / roll 4dF").send(event)