diff options
Diffstat (limited to 'ATRI/plugins/rich/__init__.py')
-rw-r--r-- | ATRI/plugins/rich/__init__.py | 76 |
1 files changed, 16 insertions, 60 deletions
diff --git a/ATRI/plugins/rich/__init__.py b/ATRI/plugins/rich/__init__.py index 476eb88..87a2b02 100644 --- a/ATRI/plugins/rich/__init__.py +++ b/ATRI/plugins/rich/__init__.py @@ -1,70 +1,26 @@ -import re -import json -from random import choice -from aiohttp.client import ClientSession - from nonebot.adapters.cqhttp import Bot, MessageEvent -from nonebot.adapters.cqhttp.message import MessageSegment - -from ATRI.service import Service as sv -from ATRI.utils.request import get_bytes -from ATRI.utils.limit import is_too_exciting - -from .data_source import dec +from ATRI.utils.limit import FreqLimiter +from .data_source import Rich -temp_list = [] -img_url = [ - "https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/fkrich.png", - "https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/xixi.jpg", -] +_rich_flmt = FreqLimiter(2) -bilibili_rich = sv.on_message() +bili_rich = Rich().on_message("小程序爪巴", block=False) -@bilibili_rich.handle() -async def _bilibili_rich(bot: Bot, event: MessageEvent) -> None: - global temp_list +@bili_rich.handle() +async def _fk_bili(bot: Bot, event: MessageEvent): + user_id = event.get_user_id() + if not _rich_flmt.check(user_id): + return + + msg = str(event.message) try: - msg = str(event.raw_message).replace("\\", "") - bv = False - - if "qqdocurl" not in msg: - if "av" in msg: - av = re.findall(r"(av\d+)", msg)[0].replace("av", "") - else: - bv = re.findall(r"(BV\w+)", msg) - av = str(dec(bv[0])) - else: - patt = r"(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-&?=%.]+" - bv_url = re.findall(patt, msg) - bv_url = bv_url[3] - async with ClientSession() as session: - async with session.get(url=bv_url) as r: - bv = re.findall(r"(BV\w+)", str(r.url)) - av = dec(bv[0]) - - if not bv: - if "av" in msg: - av = re.findall(r"(av\d+)", msg)[0].replace("av", "") - else: - return - - user = event.user_id - check = is_too_exciting(user, 1, 10) - if not check: - return - - URL = f"https://api.kyomotoi.moe/api/bilibili/v2/?aid={av}" - data = json.loads(await get_bytes(URL))["data"] - repo = ( - f"{data['bvid']} INFO:\n" - f"Title: {data['title']}\n" - f"Link: {data['short_link']}\n" - "にまねげぴのTencent rich!" - ) - await bot.send(event, MessageSegment.image(file=choice(img_url))) - await bilibili_rich.finish(repo) + result, is_ok = await Rich().fk_bili(msg) except BaseException: return + if not is_ok: + return + _rich_flmt.start_cd(user_id) + await bili_rich.finish(result) |