fb43306571
Dockerfile fixes: - edu_master/phpsessid-bot: add --no-install-recommends, pin pip versions - edu_master/webinar-checker: pin pip versions with --no-cache-dir - userbot: add SHELL with pipefail for pipe operations Ruff fixes (173 → 0): - W293/W291/W292: whitespace clean via ruff format - N806: camelCase → snake_case (anilist, safone, hearts, flux, etc.) - ARG001/ARG002: prefix unused params with _ - SIM115: use context managers for file I/O - SIM117: combine nested with statements - S608: noqa on SQL f-strings (module name is validated) - E402/N812/N817: import fixes - B023: pass loop variable as argument - I001: auto-sorted imports - syntax: fixed = vs == in dtek_notif/main.py
67 lines
3.2 KiB
Python
67 lines
3.2 KiB
Python
import random
|
|
from io import BytesIO
|
|
|
|
from pyrogram import Client, enums, filters
|
|
from pyrogram.types import Message
|
|
from utils.misc import modules_help, prefix
|
|
from utils.scripts import import_library
|
|
|
|
requests = import_library('requests')
|
|
PIL = import_library('PIL', 'pillow')
|
|
|
|
from PIL import Image, ImageDraw, ImageFont # noqa: E402
|
|
|
|
|
|
@Client.on_message(filters.command(['dem'], prefix) & filters.me)
|
|
async def demotivator(client: Client, message: Message):
|
|
await message.edit('<code>Process of demotivation...</code>', parse_mode=enums.ParseMode.HTML)
|
|
font = requests.get(
|
|
'https://github.com/The-MoonTg-project/files/blob/main/Times%20New%20Roman.ttf?raw=true', timeout=10
|
|
)
|
|
f = font.content
|
|
template_dem = requests.get('https://raw.githubusercontent.com/files/main/demotivator.png', timeout=10)
|
|
if message.reply_to_message:
|
|
words = ['random', 'text', 'typing', 'fuck']
|
|
if message.reply_to_message.photo:
|
|
donwloads = await client.download_media(message.reply_to_message.photo.file_id)
|
|
photo = Image.open(f'{donwloads}')
|
|
resize_photo = photo.resize((469, 312))
|
|
text = message.text.split(' ', maxsplit=1)[1] if len(message.text.split()) > 1 else random.choice(words) # noqa: S311
|
|
im = Image.open(BytesIO(template_dem.content))
|
|
im.paste(resize_photo, (65, 48))
|
|
text_font = ImageFont.truetype(BytesIO(f), 22)
|
|
text_draw = ImageDraw.Draw(im)
|
|
text_draw.multiline_text((299, 412), text, font=text_font, fill=(255, 255, 255), anchor='ms')
|
|
im.save(f'downloads/{message.id}.png')
|
|
await message.reply_to_message.reply_photo(f'downloads/{message.id}.png')
|
|
await message.delete()
|
|
elif message.reply_to_message.sticker:
|
|
if not message.reply_to_message.sticker.is_animated:
|
|
donwloads = await client.download_media(message.reply_to_message.sticker.file_id)
|
|
photo = Image.open(f'{donwloads}')
|
|
resize_photo = photo.resize((469, 312))
|
|
text = message.text.split(' ', maxsplit=1)[1] if len(message.text.split()) > 1 else random.choice(words) # noqa: S311
|
|
im = Image.open(BytesIO(template_dem.content))
|
|
im.paste(resize_photo, (65, 48))
|
|
text_font = ImageFont.truetype(BytesIO(f), 22)
|
|
text_draw = ImageDraw.Draw(im)
|
|
text_draw.multiline_text((299, 412), text, font=text_font, fill=(255, 255, 255), anchor='ms')
|
|
im.save(f'downloads/{message.id}.png')
|
|
await message.reply_to_message.reply_photo(f'downloads/{message.id}.png')
|
|
await message.delete()
|
|
else:
|
|
await message.edit(
|
|
'<b>Animated stickers are not supported</b>',
|
|
parse_mode=enums.ParseMode.HTML,
|
|
)
|
|
else:
|
|
await message.edit(
|
|
'<b>Need to answer the photo/sticker</b>',
|
|
parse_mode=enums.ParseMode.HTML,
|
|
)
|
|
else:
|
|
await message.edit('<b>Need to answer the photo/sticker</b>', parse_mode=enums.ParseMode.HTML)
|
|
|
|
|
|
modules_help['demotivator'] = {'dem [text]*': 'Reply to the picture to make a demotivator out of it'}
|