summaryrefslogtreecommitdiff
path: root/ATRI/plugins/anime_search.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/anime_search.py')
-rw-r--r--ATRI/plugins/anime_search.py35
1 files changed, 10 insertions, 25 deletions
diff --git a/ATRI/plugins/anime_search.py b/ATRI/plugins/anime_search.py
index 7436aa2..2909632 100644
--- a/ATRI/plugins/anime_search.py
+++ b/ATRI/plugins/anime_search.py
@@ -1,18 +1,14 @@
-import re
from random import choice
-from nonebot.matcher import Matcher
-from nonebot.params import ArgPlainText, CommandArg
from nonebot.adapters.onebot.v11 import Bot, MessageEvent, Message, MessageSegment
+from nonebot.adapters.onebot.v11.helpers import extract_image_urls, Cooldown
from ATRI.service import Service
from ATRI.rule import is_in_service
from ATRI.utils import request, Translate
-from ATRI.utils.limit import FreqLimiter
from ATRI.exceptions import RequestError
URL = "https://api.trace.moe/search?anilistInfo=true&url="
-_anime_flmt = FreqLimiter(10)
_anime_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"])
__doc__ = """
@@ -31,13 +27,16 @@ class Anime(Service):
res = await request.get(aim)
except RequestError:
raise RequestError("Request failed!")
- result = await res.json()
+ result = res.json()
return result
@classmethod
async def search(cls, url: str) -> str:
data = await cls._request(url)
- data = data["result"]
+ try:
+ data = data["result"]
+ except:
+ return "没有相似的结果呢..."
d = dict()
for i in range(3):
@@ -80,30 +79,16 @@ class Anime(Service):
anime_search = Anime().on_command("以图搜番", "发送一张图以搜索可能的番剧")
-@anime_search.handle()
-async def _ready_sear(
- matcher: Matcher, event: MessageEvent, args: Message = CommandArg()
-):
- user_id = event.get_user_id()
- if not _anime_flmt.check(user_id):
- await anime_search.finish(_anime_flmt_notice)
-
- msg = args.extract_plain_text()
- if msg:
- matcher.set_arg("anime_pic", args)
-
-
-@anime_search.got("anime_pic", "图呢?")
+@anime_search.got("anime_pic", "图呢?", [Cooldown(5, prompt=_anime_flmt_notice)])
async def _deal_sear(
- bot: Bot, event: MessageEvent, pic: str = ArgPlainText("anime_pic")
+ bot: Bot, event: MessageEvent
):
user_id = event.get_user_id()
- img = re.findall(r"url=(.*?)]", pic)
+ img = extract_image_urls(event.message)
if not img:
- await anime_search.reject("请发送图片而不是其它东西!!")
+ await anime_search.finish("请发送图片而不是其它东西!!")
await bot.send(event, "别急,在找了")
a = await Anime().search(img[0])
result = f"> {MessageSegment.at(user_id)}\n" + a
- _anime_flmt.start_cd(user_id)
await anime_search.finish(Message(result))