Untitled
unknown
python
a year ago
2.7 kB
2
Indexable
Never
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)