diff options
Diffstat (limited to 'ATRI/plugins/util/__init__.py')
-rw-r--r-- | ATRI/plugins/util/__init__.py | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/ATRI/plugins/util/__init__.py b/ATRI/plugins/util/__init__.py new file mode 100644 index 0000000..1e31bff --- /dev/null +++ b/ATRI/plugins/util/__init__.py @@ -0,0 +1,134 @@ +import re +from random import choice, random + +from nonebot.typing import T_State +from nonebot.adapters.cqhttp import Bot, MessageEvent + +from ATRI.utils.limit import FreqLimiter +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 + +async def _ready_roll(bot: Bot, event: MessageEvent, state: T_State): + msg = str(event.message).strip() + if msg: + state["roll"] = msg + [email protected]("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) + + if not match: + await roll.finish("阿——!参数不对!格式:1d10 或 2d10+2d10+more") + + msg = Utils().roll_dice(text) + 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.handle() +async def _ready_en(bot: Bot, event: MessageEvent, state: T_State): + msg = str(event.message).strip() + if msg: + state["encr_en_text"] = msg + +@encrypt_en.got("encr_en_text", "内容呢?!") +async def _deal_en(bot: Bot, event: MessageEvent, state: T_State): + text = state["encr_en_text"] + is_ok = len(text) + if is_ok < 10: + await encrypt_en.reject("太短不加密!") + en = Encrypt() + result = en.encode(text) + await encrypt_en.finish(result) + + +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() + if msg: + state["encr_de_text"] = msg + +@encrypt_de.got("encr_de_text", "内容呢?!") +async def _deal_de(bot: Bot, event: MessageEvent, state: T_State): + text = state["encr_de_text"] + en = Encrypt() + result = en.decode(text) + await encrypt_de.finish(result) + + +sepi = Utils().on_command("涩批一下", "将正常的句子涩一涩~") + +_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 + +async def _ready_sepi(bot: Bot, event: MessageEvent, state: T_State): + 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() + if msg: + state["sepi_text"] = msg + [email protected]("sepi_text", "内容呢?!") +async def _deal_sepi(bot: Bot, event: MessageEvent, state: T_State): + user_id = event.get_user_id() + msg = state["sepi_text"] + if len(msg) < 4: + await sepi.finish("这么短?涩不起来!") + + result = Yinglish.deal(msg, random()) + _sepi_flmt.start_cd(user_id) + await sepi.finish(result) |