-
Notifications
You must be signed in to change notification settings - Fork 4
/
anime.py
67 lines (54 loc) · 1.93 KB
/
anime.py
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from pyrogram import Client, filters, enums
from pyrogram.types import Message
# noinspection PyUnresolvedReferences
from utils.misc import modules_help, prefix
from utils.scripts import format_exc
from aiohttp import ClientSession
from io import BytesIO
session = ClientSession()
class Post:
def __init__(self, source: dict, session: ClientSession):
self._json = source
self.session = session
@property
async def image(self):
return (
self.file_url
if self.file_url
else self.large_file_url
if self.large_file_url
else self.source
if self.source and "pximg" not in self.source
else await self.pximg
if self.source
else None
)
@property
async def pximg(self):
async with self.session.get(self.source) as response:
return BytesIO(await response.read())
def __getattr__(self, item):
return self._json.get(item)
async def random():
async with session.get(
url="https://danbooru.donmai.us/posts/random.json"
) as response:
return Post(await response.json(encoding="utf-8"), session)
@Client.on_message(filters.command(["arnd", "arandom"], prefix) & filters.me)
async def anime_handler(client: Client, message: Message):
try:
await message.edit("<b>Searching art</b>", parse_mode=enums.ParseMode.HTML)
ra = await random()
img = await ra.image
await message.reply_photo(
photo=img,
caption=f'<b>{ra.tag_string_general if ra.tag_string_general else "Untitled"}</b>',
parse_mode=enums.ParseMode.HTML
)
return await message.delete()
except Exception as e:
await message.edit(format_exc(e), parse_mode=enums.ParseMode.HTML)
modules_help["anime"] = {
"arnd": "Random anime art (May get caught 18+)",
"arandom": "Random anime art (May get caught 18+)",
}