diff options
Diffstat (limited to 'ATRI/plugins/util/__init__.py')
-rw-r--r-- | ATRI/plugins/util/__init__.py | 97 |
1 files changed, 24 insertions, 73 deletions
diff --git a/ATRI/plugins/util/__init__.py b/ATRI/plugins/util/__init__.py index 541ca1b..b67a988 100644 --- a/ATRI/plugins/util/__init__.py +++ b/ATRI/plugins/util/__init__.py @@ -1,8 +1,9 @@ import re from random import choice, random -from nonebot.typing import T_State -from nonebot.adapters.cqhttp import Bot, MessageEvent +from nonebot.matcher import Matcher +from nonebot.params import CommandArg, ArgPlainText +from nonebot.adapters.onebot.v11 import MessageEvent, Message from ATRI.utils.limit import FreqLimiter from .data_source import Encrypt, Utils, Yinglish @@ -11,62 +12,36 @@ from .data_source import Encrypt, Utils, Yinglish roll = Utils().on_command("/roll", "骰子~用法:1d10 或 2d10+2d10+more") [email protected]_parser # type: ignore -async def _get_roll(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() - quit_list = ["算了", "罢了"] - if msg in quit_list: - await roll.finish("好吧...") - if not msg: - await roll.reject("参数呢?!格式:1d10 或 2d10+2d10+more") - else: - state["roll"] = msg - - @roll.handle() -async def _ready_roll(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() +async def _ready_roll(matcher: Matcher, args: Message = CommandArg()): + msg = args.extract_plain_text() if msg: - state["roll"] = msg + matcher.set_arg("roll", args) @roll.got("roll", "参数呢?!格式:1d10 或 2d10+2d10+more") -async def _deal_roll(bot: Bot, event: MessageEvent, state: T_State): - text = state["roll"] - match = re.match(r"^([\dd+\s]+?)$", text) +async def _deal_roll(roll_msg: str = ArgPlainText("roll")): + match = re.match(r"^([\dd+\s]+?)$", roll_msg) if not match: await roll.finish("阿——!参数不对!格式:1d10 或 2d10+2d10+more") - msg = Utils().roll_dice(text) + msg = Utils().roll_dice(roll_msg) await roll.finish(msg) -encrypt_en = Utils().on_command("加密", "我们之前的秘密❤") - - -@encrypt_en.args_parser # type: ignore -async def _get_encr_en_text(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() - quit_list = ["算了", "罢了"] - if msg in quit_list: - await roll.finish("好吧...") - if not msg: - await roll.reject("内容呢?!") - else: - state["encr_en_text"] = msg +encrypt_en = Utils().on_command("加密", "我们之间的秘密❤") @encrypt_en.handle() -async def _ready_en(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() +async def _ready_en(matcher: Matcher, args: Message = CommandArg()): + msg = args.extract_plain_text() if msg: - state["encr_en_text"] = msg + matcher.set_arg("encr_en_text", args) @encrypt_en.got("encr_en_text", "内容呢?!") -async def _deal_en(bot: Bot, event: MessageEvent, state: T_State): - text = state["encr_en_text"] +async def _deal_en(text: str = ArgPlainText("encr_en_text")): is_ok = len(text) if is_ok < 10: await encrypt_en.reject("太短不加密!") @@ -78,28 +53,15 @@ async def _deal_en(bot: Bot, event: MessageEvent, state: T_State): encrypt_de = Utils().on_command("解密", "解开我们的秘密❤") -@encrypt_de.args_parser # type: ignore -async def _get_encr_de_text(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() - quit_list = ["算了", "罢了"] - if msg in quit_list: - await encrypt_de.finish("好吧...") - if not msg: - await encrypt_de.reject("内容呢?!") - else: - state["encr_de_text"] = msg - - @encrypt_de.handle() -async def _ready_de(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() +async def _ready_de(matcher: Matcher, args: Message = CommandArg()): + msg = args.extract_plain_text() if msg: - state["encr_de_text"] = msg + matcher.set_arg("encr_de_text", args) @encrypt_de.got("encr_de_text", "内容呢?!") -async def _deal_de(bot: Bot, event: MessageEvent, state: T_State): - text = state["encr_de_text"] +async def _deal_de(text: str = ArgPlainText("encr_de_text")): en = Encrypt() result = en.decode(text) await encrypt_de.finish(result) @@ -111,33 +73,22 @@ _sepi_flmt = FreqLimiter(3) _sepi_flmt_notice = ["涩批爬", "✌🥵✌"] [email protected]_parser # type: ignore -async def _get_sepi(bot: Bot, event: MessageEvent, state: T_State): - msg = str(event.message).strip() - quit_list = ["算了", "罢了", "取消"] - if msg in quit_list: - await sepi.finish("好吧...") - if not msg: - await sepi.reject("内容呢?!") - else: - state["sepi_text"] = msg - - @sepi.handle() -async def _ready_sepi(bot: Bot, event: MessageEvent, state: T_State): +async def _ready_sepi( + matcher: Matcher, event: MessageEvent, args: Message = CommandArg() +): user_id = event.get_user_id() if not _sepi_flmt.check(user_id): await sepi.finish(choice(_sepi_flmt_notice)) - msg = str(event.message).strip() + msg = args.extract_plain_text() if msg: - state["sepi_text"] = msg + matcher.set_arg("sepi_text", args) @sepi.got("sepi_text", "内容呢?!") -async def _deal_sepi(bot: Bot, event: MessageEvent, state: T_State): +async def _deal_sepi(event: MessageEvent, msg: str = ArgPlainText("sepi_text")): user_id = event.get_user_id() - msg = state["sepi_text"] if len(msg) < 4: await sepi.finish("这么短?涩不起来!") |