from nonebot import on_command from utils.utils import FreqLimiter, scheduler, get_message_text, is_number from nonebot.adapters.cqhttp.permission import GROUP from nonebot.typing import T_State from nonebot.adapters.cqhttp import Bot, GroupMessageEvent, MessageEvent from nonebot.permission import SUPERUSER import random from nonebot.plugin import MatcherGroup import re from .open_cases_c import open_case, total_open_statistics, group_statistics, my_knifes_name, open_shilian_case from .utils import util_get_buff_price, util_get_buff_img, update_count_daily __plugin_name__ = '开箱' __plugin_usage__ = ( '用法:\n' '看看你的人品罢了\n' '目前只支持\n\t' '1.狂牙大行动武器箱\n\t' '2.突围大行动武器箱\n\t' '3.命悬一线武器箱\n\t' '4.裂空武器箱\n\t' '5.光谱武器箱\n' '示例:小真寻开箱 突围大行动(不输入指定武器箱则随机)\n' '示例:我的开箱(开箱统计)\n' '示例:群开箱统计\n' '示例:我的金色' ) _flmt = FreqLimiter(3) cases_name = ['狂牙大行动', '突围大行动', '命悬一线', '裂空', '光谱'] cases_matcher_group = MatcherGroup(priority=5, permission=GROUP, block=True) k_open_case = cases_matcher_group.on_command("开箱") @k_open_case.handle() async def _(bot: Bot, event: GroupMessageEvent, state: T_State): if str(event.get_message()).strip() in ['帮助']: await k_open_case.finish(__plugin_usage__) if not _flmt.check(event.user_id): await k_open_case.finish('着什么急啊,慢慢来!', at_sender=True) _flmt.start_cd(event.user_id) case_name = get_message_text(event.json()) if case_name: result = await open_case(event.user_id, event.group_id, case_name) else: result = await open_case(event.user_id, event.group_id, random.choice(cases_name)) await k_open_case.finish(result, at_sender=True) total_case_data = cases_matcher_group.on_command("我的开箱", aliases={'开箱统计', '开箱查询', '查询开箱'}) @total_case_data.handle() async def _(bot: Bot, event: GroupMessageEvent, state: T_State): await total_case_data.finish( await total_open_statistics(event.user_id, event.group_id), at_sender=True, ) group_open_case_statistics = cases_matcher_group.on_command("群开箱统计") @group_open_case_statistics.handle() async def _(bot: Bot, event: GroupMessageEvent, state: T_State): await group_open_case_statistics.finish(await group_statistics(event.group_id)) my_kinfes = on_command("我的金色", priority=1, permission=GROUP, block=True) @my_kinfes.handle() async def _(bot: Bot, event: GroupMessageEvent, state: T_State): await my_kinfes.finish(await my_knifes_name(event.user_id, event.group_id), at_sender=True) open_shilian = cases_matcher_group.on_regex(".*连开箱") @open_shilian.handle() async def _(bot: Bot, event: GroupMessageEvent, state: T_State): # if not _flmt.check(event.user_id): # await k_open_case.finish('着什么急啊,慢慢来!', at_sender=True) _flmt.start_cd(event.user_id) msg = get_message_text(event.json()) rs = re.search(r'(.*)连开箱(.*)', msg) if rs: num = rs.group(1).strip() if is_number(num) or num_dict.get(num): try: num = num_dict[num] except KeyError: num = int(num) if num > 30: await open_shilian.finish('开箱次数不要超过30啊笨蛋!', at_sender=True) else: await open_shilian.finish('必须要是数字切不要超过30啊笨蛋!中文也可!', at_sender=True) case_name = rs.group(2).strip() if case_name.find('武器箱') != -1: case_name = case_name.replace('武器箱', '').strip() if not case_name: case_name = random.choice(cases_name) elif case_name not in cases_name: await open_shilian.finish('武器箱未收录!', at_sender=True) await open_shilian.finish(await open_shilian_case(event.user_id, event.group_id, case_name, num), at_sender=True) # await open_shilian.send("嘟嘟嘟...开箱中...") # num = 10 # if str(state["_prefix"]["raw_command"]).find('十') != -1: # num = 10 # elif str(state["_prefix"]["raw_command"]).find('五') != -1: # num = 5 # if case_name: # await open_shilian.finish(await open_shilian_case(event.user_id, event.group_id, case_name, num), at_sender=True) # else: # await open_shilian.finish(await open_shilian_case(event.user_id, event.group_id, random.choice(cases_name), num), # at_sender=True) num_dict = { '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '十': 10, '十一': 11, '十二': 12, '十三': 13, '十四': 14, '十五': 15, '十六': 16, '十七': 17, '十八': 18, '十九': 19, '二十': 20, '二十一': 21, '二十二': 22, '二十三': 23, '二十四': 24, '二十五': 25, '二十六': 26, '二十七': 27, '二十八': 28, '二十九': 29, '三十': 30 } update_price = on_command("更新价格", priority=1, permission=SUPERUSER, block=True) @update_price.handle() async def _(bot: Bot, event: MessageEvent, state: T_State): await update_price.send(await util_get_buff_price(str(event.get_message()))) update_img = on_command("更新图片", priority=1, permission=SUPERUSER, block=True) @update_img.handle() async def _(bot: Bot, event: MessageEvent, state: T_State): await update_img.send(await util_get_buff_img(str(event.get_message()))) # 重置开箱 @scheduler.scheduled_job( 'cron', hour=0, minute=1, ) async def _(): await update_count_daily()