Spaces:
Runtime error
Runtime error
import base64 | |
import os | |
import time | |
import requests | |
from pyrogram import Client | |
from pyrogram.types import Message | |
from . import HelpMenu, hellbot, on_message | |
def generate_quote(messages: list[dict]) -> tuple[bool, str]: | |
json = { | |
"type": "quote", | |
"format": "webp", | |
"backgroundColor": "#260746/#6100c2", | |
"width": 512, | |
"height": 768, | |
"scale": 2, | |
"messages": messages, | |
} | |
try: | |
response = requests.post("https://bot.lyo.su/quote/generate", json=json).json() | |
image = base64.b64decode(str(response["result"]["image"]).encode("utf-8")) | |
file_name = f"Quote_{int(time.time())}.webp" | |
with open(file_name, "wb") as f: | |
f.write(image) | |
return True, file_name | |
except Exception as e: | |
return False, str(e) | |
def get_entities(message: Message) -> list[dict]: | |
entities = [] | |
if message.entities: | |
for entity in message.entities: | |
entities.append( | |
{ | |
"type": entity.type.name.lower(), | |
"offset": entity.offset, | |
"length": entity.length, | |
} | |
) | |
return entities | |
async def quotely(client: Client, message: Message): | |
if not message.reply_to_message: | |
return await hellbot.delete(message, "Reply to a message to quote it.") | |
if message.reply_to_message.media: | |
if message.reply_to_message.caption: | |
message.reply_to_message.text = message.reply_to_message.caption | |
else: | |
return await hellbot.delete( | |
message, "Reply to a text message to quote it." | |
) | |
cmd = None | |
if len(message.command) > 1: | |
cmd = message.command[1].lower() | |
hell = await hellbot.edit(message, "__Generating quote...__") | |
msg_data = [] | |
if cmd and cmd == "r": | |
await hell.edit("__Generating quote with reply...__") | |
reply_msg_id = message.reply_to_message.reply_to_message_id | |
if reply_msg_id: | |
reply_msg = await client.get_messages(message.chat.id, reply_msg_id) | |
if reply_msg and reply_msg.text: | |
replied_name = reply_msg.from_user.first_name | |
if reply_msg.from_user.last_name: | |
replied_name += f" {reply_msg.from_user.last_name}" | |
reply_message = { | |
"chatId": reply_msg.from_user.id, | |
"entities": get_entities(reply_msg), | |
"name": replied_name, | |
"text": reply_msg.text, | |
} | |
else: | |
reply_message = {} | |
else: | |
reply_message = {} | |
else: | |
reply_message = {} | |
name = message.reply_to_message.from_user.first_name | |
if message.reply_to_message.from_user.last_name: | |
name += f" {message.reply_to_message.from_user.last_name}" | |
emoji_status = None | |
if message.reply_to_message.from_user.emoji_status: | |
emoji_status = str(message.reply_to_message.from_user.emoji_status.custom_emoji_id) | |
msg_data.append( | |
{ | |
"entities": get_entities(message.reply_to_message), | |
"avatar": True, | |
"from": { | |
"id": message.reply_to_message.from_user.id, | |
"name": name, | |
"emoji_status": emoji_status, | |
}, | |
"text": message.reply_to_message.text, | |
"replyMessage": reply_message, | |
} | |
) | |
status, path = generate_quote(msg_data) | |
if not status: | |
return await hellbot.error(message, f"`{path}`") | |
await message.reply_sticker(path) | |
await hell.delete() | |
os.remove(path) | |
HelpMenu("quote").add( | |
"q", | |
"<reply>", | |
"Generate a quote sticker of the replied message.", | |
"q", | |
"An alias of 'ss' can also be used.", | |
).add( | |
"q r", | |
"<reply>", | |
"Generate a quote sticker of the replied message with it's reply message.", | |
"q r", | |
"An alias of 'ss r' can also be used.", | |
).info( | |
"Quotely Module" | |
).done() | |