taslim19
Add kang and get_sticker management plugin adapted for DragMusic
7710b6e
import math
import os
from PIL import Image
from pyrogram import Client, raw
from pyrogram.file_id import FileId
# ------------------
STICKER_DIMENSIONS = (512, 512)
# -------------------
async def resize_file_to_sticker_size(file_path: str) -> str:
im = Image.open(file_path)
if (im.width, im.height) < STICKER_DIMENSIONS:
size1 = im.width
size2 = im.height
if im.width > im.height:
scale = STICKER_DIMENSIONS[0] / size1
size1new = STICKER_DIMENSIONS[0]
size2new = size2 * scale
else:
scale = STICKER_DIMENSIONS[1] / size2
size1new = size1 * scale
size2new = STICKER_DIMENSIONS[1]
size1new = math.floor(size1new)
size2new = math.floor(size2new)
sizenew = (size1new, size2new)
im = im.resize(sizenew)
else:
im.thumbnail(STICKER_DIMENSIONS)
try:
os.remove(file_path)
file_path = f"{file_path}.png"
return file_path
finally:
im.save(file_path)
async def upload_document(
client: Client, file_path: str, chat_id: int
) -> raw.base.InputDocument:
media = await client.invoke(
raw.functions.messages.UploadMedia(
peer=await client.resolve_peer(chat_id),
media=raw.types.InputMediaUploadedDocument(
mime_type=client.guess_mime_type(file_path)
or "application/zip",
file=await client.save_file(file_path),
attributes=[
raw.types.DocumentAttributeFilename(
file_name=os.path.basename(file_path)
)
],
),
)
)
return raw.types.InputDocument(
id=media.document.id,
access_hash=media.document.access_hash,
file_reference=media.document.file_reference,
)
async def get_document_from_file_id(
file_id: str,
) -> raw.base.InputDocument:
decoded = FileId.decode(file_id)
return raw.types.InputDocument(
id=decoded.media_id,
access_hash=decoded.access_hash,
file_reference=decoded.file_reference,
)