Написал бота для telegram использовал библиотеки pillow и python-telegram-bot. Итог: после запуска проходит секунды 3 и скрипт закрывается (Платформа Windows, python 3.10)
Вот код:
Заранее благодарю за помощь!
Вот код:
Python:
import os
import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, filters
from PIL import Image
# Инициализация логгера
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)
logger = logging.getLogger(__name__)
# Обработчик команды /start
def start(update: Update, context):
context.bot.send_message(chat_id=update.effective_chat.id,
text="Привет! Отправь мне фотографию.")
# Обработчик изображений
def image_handler(update: Update, context):
# Получение файла из сообщения
photo = update.message.photo[-1].get_file()
file_path = os.path.join('downloads', f'{photo.file_id}.jpg')
# Скачивание файла
photo.download(file_path)
# Увеличение разрешения и применение сглаживания
image = Image.open(file_path)
resized_image = image.resize((image.width * 2, image.height * 2), Image.LANCZOS)
# Сохранение измененного изображения
output_path = os.path.join('downloads', f'{photo.file_id}_resized.jpg')
resized_image.save(output_path)
# Отправка измененного изображения пользователю
context.bot.send_photo(chat_id=update.effective_chat.id, photo=open(output_path, 'rb'))
# Удаление временных файлов
os.remove(file_path)
os.remove(output_path)
# Обработчик ошибок
def error_handler(update: Update, context):
logger.warning('Update "%s" caused error "%s"', update, context.error)
def main():
# Создание экземпляра Updater и передача токена вашего бота
updater = Updater('YOUR_BOT_TOKEN', use_context=True)
# Получение диспетчера для регистрации обработчиков
dispatcher = updater.dispatcher
# Регистрация обработчиков команд
dispatcher.add_handler(CommandHandler('start', start))
# Регистрация обработчика изображений
dispatcher.add_handler(MessageHandler(Filters.photo, image_handler))
# Регистрация обработчика ошибок
dispatcher.add_error_handler(error_handler)
# Запуск бота
updater.start_polling()
updater.idle()
if __name__ == 'main':
main()