Скрипт бота telegram закрывается без выдачи ошибки.

The_Jeday

Новичок
Пользователь
Май 24, 2023
2
0
1
Написал бота для 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()
Заранее благодарю за помощь!
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
419
113
43
Заметил 2 ошибки:
1 импортируется модуль filters, а дальше в скрипте используется с заглавной буквы Filters
2 if __name__ == 'main': тут main должно быть написано с двумя нижними подчеркиваниями с обеих сторон
 

The_Jeday

Новичок
Пользователь
Май 24, 2023
2
0
1
Ошибки исправил, но вылезла другая проблема:

File "myfile", line 66, in <module>
main()
File "myfile", line 47, in main
updater = Updater('5502720932:AAF0LA8MkMvBegp36Mb0zRg2b2QMGKozxKU', use_context=True)
TypeError: Updater.__init__() got an unexpected keyword argument 'use_context'

Версия библиотеки python-telegram-bot последняя
 

Форум IT Специалистов