From 490d807e7a1103c5fc3d5b0cfc6e1664bacc812c Mon Sep 17 00:00:00 2001 From: passthem Date: Thu, 30 Oct 2025 16:48:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=E5=AF=B9?= =?UTF-8?q?=E9=A2=98=E8=A7=A3=E6=8F=90=E4=BA=A4=E7=A9=BA=E6=A0=BC=E7=9A=84?= =?UTF-8?q?=E6=83=85=E5=86=B5=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/kona_ph/__init__.py | 32 +++++++++++++++++++++-------- konabot/plugins/kona_ph/manager.py | 6 +++++- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/konabot/plugins/kona_ph/__init__.py b/konabot/plugins/kona_ph/__init__.py index f1ea8ec..99a1bfc 100644 --- a/konabot/plugins/kona_ph/__init__.py +++ b/konabot/plugins/kona_ph/__init__.py @@ -2,7 +2,8 @@ from functools import reduce from math import ceil import re from loguru import logger -from nonebot_plugin_alconna import Alconna, Args, UniMessage, on_alconna +from nonebot import on_message +from nonebot_plugin_alconna import Alconna, Args, UniMessage, UniMsg, on_alconna from konabot.common.nb.qq_broadcast import qq_broadcast from konabot.common.username import get_username from konabot.plugins.kona_ph.core.storage import get_today_date @@ -23,16 +24,29 @@ async def is_play_group(target: DepLongTaskTarget): return False -cmd_submit = on_alconna(Alconna( - "re:提交(?:答案|题解|[fF]lag)", - Args["flag", str], -), rule=is_play_group) +# cmd_submit = on_alconna(Alconna( +# "re:提交(?:答案|题解|[fF]lag)", +# Args["flag", str], +# ), rule=is_play_group) +# +# @cmd_submit.handle() +# async def _(flag: str, target: DepLongTaskTarget): +# async with puzzle_manager() as manager: +# result = manager.submit(target.target_id, flag) +# await target.send_message(result.get_unimessage()) + + +cmd_submit = on_message(rule=is_play_group) + @cmd_submit.handle() -async def _(flag: str, target: DepLongTaskTarget): - async with puzzle_manager() as manager: - result = manager.submit(target.target_id, flag) - await target.send_message(result.get_unimessage()) +async def _(msg: UniMsg, target: DepLongTaskTarget): + txt = msg.extract_plain_text().strip() + if match := re.match(r"^提交(?:答案|题解|[fF]lag)\s*(?P.+?)\s*$", txt): + submission: str = match.group("submission") + async with puzzle_manager() as manager: + result = manager.submit(target.target_id, submission) + await target.send_message(result.get_unimessage()) cmd_query = on_alconna(Alconna( diff --git a/konabot/plugins/kona_ph/manager.py b/konabot/plugins/kona_ph/manager.py index a284675..60425ba 100644 --- a/konabot/plugins/kona_ph/manager.py +++ b/konabot/plugins/kona_ph/manager.py @@ -305,7 +305,11 @@ def create_admin_commands(): if description is not None: p.content = description if flag is not None: - p.flag = flag + p.flag = flag.strip() + if flag.strip() != flag: + await target.send_message( + "⚠️ 注意:你输入的 Flag 含有开头或结尾的空格,已经帮你去除" + ) if image is not None and image.url is not None: b = await download_image_bytes(image.url) p.add_image(b.unwrap())