From c38bab21b3c85e82250e3b82ebde31e2aca2db92 Mon Sep 17 00:00:00 2001 From: Kyomotoi Date: Sat, 5 Feb 2022 00:47:52 +0800 Subject: =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=F0=9F=94=92=EF=B8=8F=F0=9F=94=A7?= =?UTF-8?q?=20=E5=A4=A7=E5=9E=8B=E4=BF=AE=E5=A4=8D=E5=B7=A5=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 针对传回消息不同适配、外置限制改为nb内置限制 --- ATRI/plugins/saucenao/__init__.py | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) (limited to 'ATRI/plugins/saucenao') diff --git a/ATRI/plugins/saucenao/__init__.py b/ATRI/plugins/saucenao/__init__.py index 092db50..d3ad38f 100644 --- a/ATRI/plugins/saucenao/__init__.py +++ b/ATRI/plugins/saucenao/__init__.py @@ -1,39 +1,23 @@ from re import findall from random import choice -from nonebot.matcher import Matcher -from nonebot.params import ArgPlainText, CommandArg from nonebot.adapters.onebot.v11 import MessageEvent, Message, MessageSegment +from nonebot.adapters.onebot.v11.helpers import extract_image_urls, Cooldown from ATRI.config import SauceNAO -from ATRI.utils.limit import FreqLimiter from .data_source import SaouceNao -_search_flmt = FreqLimiter(10) _search_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"]) saucenao = SaouceNao().on_command("以图搜图", "透过一张图搜索可能的来源") -@saucenao.handle() -async def _ready_search( - matcher: Matcher, event: MessageEvent, args: Message = CommandArg() -): +@saucenao.got("saucenao_img", "图呢?", [Cooldown(5, prompt=_search_flmt_notice)]) +async def _deal_search(event: MessageEvent): user_id = event.get_user_id() - if not _search_flmt.check(user_id): - await saucenao.finish(_search_flmt_notice) - - msg = args.extract_plain_text() - if msg: - matcher.set_arg("saucenao_img", args) - - -@saucenao.got("saucenao_img", "图呢?") -async def _deal_search(event: MessageEvent, msg: str = ArgPlainText("saucenao_img")): - user_id = event.get_user_id() - img = findall(r"url=(.*?)]", msg) + img = extract_image_urls(event.message) if not img: await saucenao.reject("请发送图片而不是其他东西!!") @@ -43,5 +27,4 @@ async def _deal_search(event: MessageEvent, msg: str = ArgPlainText("saucenao_im await saucenao.finish("失败了...") result = f"> {MessageSegment.at(user_id)}" + await a.search(img[0]) # type: ignore - _search_flmt.start_cd(user_id) await saucenao.finish(Message(result)) -- cgit v1.2.3