import re from random import choice, random from nonebot.matcher import Matcher from nonebot.params import CommandArg, ArgPlainText from nonebot.adapters.onebot.v11 import Message from nonebot.adapters.onebot.v11.helpers import Cooldown from ATRI.service import Service from .data_source import Encrypt, Yinglish, roll_dice plugin = Service("小工具").document("非常实用(?)的工具们!") roll = plugin.on_command("/roll", "骰子~用法: 1d10 或 2d10+2d10+more") @roll.handle() async def _ready_roll(matcher: Matcher, args: Message = CommandArg()): msg = args.extract_plain_text() if msg: matcher.set_arg("roll", args) @roll.got("roll", "参数呢?! 格式: 1d10 或 2d10+2d10+more") 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 = roll_dice(roll_msg) await roll.finish(msg) encrypt_en = plugin.on_command("加密", "我们之间的秘密❤") @encrypt_en.handle() async def _ready_en(matcher: Matcher, args: Message = CommandArg()): msg = args.extract_plain_text() if msg: matcher.set_arg("encr_en_text", args) @encrypt_en.got("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("太短不加密!") en = Encrypt() result = en.encode(text) await encrypt_en.finish(result) encrypt_de = plugin.on_command("解密", "解开我们的秘密❤") @encrypt_de.handle() async def _ready_de(matcher: Matcher, args: Message = CommandArg()): msg = args.extract_plain_text() if msg: matcher.set_arg("encr_de_text", args) @encrypt_de.got("encr_de_text", "内容呢?!") async def _deal_de(text: str = ArgPlainText("encr_de_text")): en = Encrypt() result = en.decode(text) await encrypt_de.finish(result) sepi = plugin.on_command("涩批一下", "将正常的句子涩一涩~") _sepi_flmt_notice = choice(["涩批爬", "✌🥵✌"]) @sepi.handle([Cooldown(3, prompt=_sepi_flmt_notice)]) async def _ready_sepi(matcher: Matcher, args: Message = CommandArg()): msg = args.extract_plain_text() if msg: matcher.set_arg("sepi_text", args) @sepi.got("sepi_text", "内容呢?!") async def _deal_sepi(msg: str = ArgPlainText("sepi_text")): if len(msg) < 4: await sepi.finish("这么短?涩不起来!") result = Yinglish(msg).deal(random()) await sepi.finish(result)