zpr support topic group (#96)

Co-authored-by: omg-xtao <100690902+omg-xtao@users.noreply.github.com>
This commit is contained in:
瓜瓜吖 2022-11-18 17:51:25 +08:00 committed by GitHub
parent 3f47dc785e
commit 1e4c977423
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,9 +3,13 @@ import shutil
from os import makedirs from os import makedirs
from os.path import exists, dirname, abspath from os.path import exists, dirname, abspath
from pagermaid.listener import listener from pagermaid.listener import listener
from pagermaid.single_utils import safe_remove
from pagermaid.enums import Client, Message, AsyncClient from pagermaid.enums import Client, Message, AsyncClient
from pyrogram.types import InputMediaPhoto from pyrogram.types import InputMediaPhoto
from pyrogram.errors import RPCError
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42'
}
async def get_result(message, request, r18=0): async def get_result(message, request, r18=0):
# r18: 0为非 R181为 R182为混合在库中的分类不等同于作品本身的 R18 标识) # r18: 0为非 R181为 R182为混合在库中的分类不等同于作品本身的 R18 标识)
@ -14,9 +18,7 @@ async def get_result(message, request, r18=0):
zpr_path = f"{dirname(abspath(__file__))}/zpr/" zpr_path = f"{dirname(abspath(__file__))}/zpr/"
if not exists(zpr_path): if not exists(zpr_path):
makedirs(zpr_path) makedirs(zpr_path)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.42'
}
size = "regular" size = "regular"
des = "出错了,没有纸片人看了。" des = "出错了,没有纸片人看了。"
data = await request.get((f"https://api.lolicon.app/setu/v2?num=5&r18={r18}&size={size}"), headers=headers, timeout=10) data = await request.get((f"https://api.lolicon.app/setu/v2?num=5&r18={r18}&size={size}"), headers=headers, timeout=10)
@ -41,11 +43,13 @@ async def get_result(message, request, r18=0):
setuList.append(InputMediaPhoto(f"{zpr_path}{imgname}")) setuList.append(InputMediaPhoto(f"{zpr_path}{imgname}"))
return setuList, zpr_path, des if setuList else None return setuList, zpr_path, des if setuList else None
@listener(command="zpr", @listener(command="zpr",
description="随机获取一组涩涩纸片人。", description="随机获取一组涩涩纸片人。",
parameters="{r18}") parameters="{r18}")
async def zpr(client: Client, message: Message, request: AsyncClient): async def zpr(client: Client, message: Message, request: AsyncClient):
arguments = message.arguments.upper().strip() arguments = message.arguments.upper().strip()
message_thread_id = message.reply_to_top_message_id or message.reply_to_message_id
message = await message.edit("正在前往二次元。。。") message = await message.edit("正在前往二次元。。。")
try: try:
photoList, zpr_path, des = await get_result(message, request, r18=1 if arguments == "R18" else 0) photoList, zpr_path, des = await get_result(message, request, r18=1 if arguments == "R18" else 0)
@ -53,9 +57,12 @@ async def zpr(client: Client, message: Message, request: AsyncClient):
shutil.rmtree(zpr_path) shutil.rmtree(zpr_path)
return await message.edit(des) return await message.edit(des)
with contextlib.suppress(Exception): with contextlib.suppress(Exception):
message = await message.edit("传送中。。。") await message.edit("传送中。。。")
await client.send_media_group(message.chat.id, photoList) try:
await client.send_media_group(message.chat.id, photoList, reply_to_message_id=message_thread_id)
except RPCError as e:
return await message.edit("此群组不允许发送媒体。" if e.ID == "CHAT_SEND_MEDIA_FORBIDDEN" else f"发生错误:\n`{e}`")
except Exception as e: except Exception as e:
await client.send_message(message.chat.id, f"{des}\n\n错误信息:\n`{e}`") return await message.edit(f"发生错误\n`{e}`")
shutil.rmtree(zpr_path) shutil.rmtree(zpr_path)
await message.safe_delete() await message.safe_delete()