Vol4ik
@Vol4ik

Python-telegram-bot, как решить ошибки process_update?

Добрый день, пытаюсь запустить бота, с простой задачей - фильтровать изображения в чате и пересылать в соседний чат/канал. Не могу решить ошибки, прошу подсказать, пока только изучаю эту отрасль.
Пробовал запускать как на локальной машине, так и в облаке (Oracle Cloud, VM Ubuntu)
Ошибки:
2022-02-16 08:01:50,481 [telegram.ext] [ERROR]  No error handlers are registered, logging exception.
Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.8/site-packages/telegram/ext/dispatcher.py", line 555, in process_update
    handler.handle_update(update, self, check, context)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/telegram/ext/handler.py", line 198, in handle_update
    return self.callback(update, context)
  File "/home/ubuntu/bot/functionalities/forwarder.py", line 22, in call
    if Filters.photo.filter(update.message):
AttributeError: 'CallbackContext' object has no attribute 'message'
Images in buffer: 0


На всякий случай приложу части когда, на которые ссылаются ошибки:
line 555, in process_update
handler.handle_update(update, self, check, context)
check = handler.check_update(update)
                    if check is not None and check is not False:
                        if not context and self.use_context:
                            context = self.context_types.context.from_update(update, self)
                            context.refresh_data()
                        handled = True
                        sync_modes.append(handler.run_async)
->                      handler.handle_update(update, self, check, context)
                        break

line 198, in handle_update
return self.callback(update, context):
if context:
            self.collect_additional_context(context, update, dispatcher, check_result)
            if run_async:
                return dispatcher.run_async(self.callback, update, context, update=update)
->          return self.callback(update, context)

        optional_args = self.collect_optional_args(dispatcher, update, check_result)
        if run_async:
            return dispatcher.run_async(
                self.callback, dispatcher.bot, update, update=update, **optional_args
            )
        return self.callback(dispatcher.bot, update, **optional_args)

line 22, in call
if Filters.photo.filter(update.message):
def call(self, bot, update: telegram.Update):
        if Filters.photo.filter(update.message):
            self.share_photo(bot, update)
        elif Filters.document.filter(update.message):
            self.share_document(bot, update)
        elif Filters.entity(telegram.MessageEntity.URL).filter(update.message):
            self.share_url(bot, update)


Спасибо за внимание
  • Вопрос задан
  • 794 просмотра
Решения вопроса 1
Vol4ik
@Vol4ik Автор вопроса
Как оказалось - все просто, бот написан под какую то старую версию telegram-bot, что не указывалось в requirements..
Удалось решить проблему даунгрейдив до 11 версии в pycharm. Осталось придумать, как поставить старую версию на VM с убунтой.
В поисках решения натыкался на схожие проблемы, которые оставались не решенными - можно попробовать актуализировать код под 12, пример на github
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы