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())