Untitled

mail@pastecode.io avatar
unknown
python
a year ago
2.7 kB
2
Indexable
import os

import aiogram
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
import re
from PIL import Image, ImageDraw, ImageFont

bot = aiogram.Bot(token="токен")
dp = aiogram.Dispatcher(bot)


def add_text_to_image(image_path, text, font_path, image_name):
    # Открываем изображение
    image = Image.open(image_path)

    # Создаем объект для рисования на изображении
    draw = ImageDraw.Draw(image)

    # Загружаем шрифт из ttf файла
    font = ImageFont.truetype(font_path, size=100)

    # Очищаем строку от неподдерживаемых символов
    cleaned_text = re.sub(r'[^\w\sа-яА-ЯёЁ,.!?]+', '', text)

    # Определяем положение текста на изображении
    text_position = (10, 50)

    # Рисуем текст на изображении
    draw.text(text_position, cleaned_text, fill="white", font=font)

    # Сохраняем измененное изображение
    image.save(f"{image_name}.jpg")


@dp.message_handler(content_types=['document'])
async def process_document(message: aiogram.types.Message):
    await message.reply(re.sub('<.*?>', '', (await bot.download_file((
                                                                         await bot.get_file(message.document.file_id))
                                                                     .file_path)).read().decode()))


@dp.message_handler(commands=['profile'])
async def add_text_to_image_and_send(message: aiogram.types.Message):
    keyboard = InlineKeyboardMarkup(row_width=1)

    # Добавляем кнопки профиля
    balance_button = InlineKeyboardButton(text="Мой баланс", callback_data="balance")
    history_button = InlineKeyboardButton(text="История операций", callback_data="history")
    tariffs_button = InlineKeyboardButton(text="Тарифы", callback_data="tariffs")
    keyboard.add(balance_button, history_button, tariffs_button)

    # Проверяем, есть ли у нас уже фото для профиля
    if not os.path.exists(f"{message.from_user.id}.jpg"):
        add_text_to_image("pattern-monochrome-telegram-logo-cats-hd-wallpaper-preview.jpg", 
                          f"Привет, {message.from_user.first_name}!", "Nunito-Regular.ttf", str(message.from_user.id))

    with open(f"{message.from_user.id}.jpg", "rb") as photo:
        # Отправляем пользователю изображение
        await message.reply_photo(photo, reply_markup=keyboard)

if __name__ == '__main__':
    aiogram.executor.start_polling(dp)