Задать вопрос
@EugeneVKruglov

Бот удаляет сразу несколько сообщений из чата. Является ли это нарушением лимитов Телеграм?

Бот в фоновом потоке периодически проводит очистку чатов от мусора: своих сообщений, служебных сообщений и т.д. После включения этой функции стал замечать, что он часто падает. В логах получаю ошибку 429, хотя таких сообщений немного, трафик запросов к боту небольшой. Может ли падение быть связано с нарушением лимитов Телеграм на отправку сообщений (20 в минуту для групп и каналов)? Это ведь не отправка сообщений, а наоборот - удаление. Хотя и то, и другое - запросы.
Если это - возможная причина, как лучше организовать удаление мусора? Просто растягивать во времени?
Фрагмент лога
2023-02-02 02:45:34,753 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 429. Description: Too Many Requests: retry after 5"
2023-02-02 02:45:34,753 (__init__.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/telebot/__init__.py", line 1073, in __threaded_polling
    polling_thread.raise_exceptions()
  File "/usr/local/lib/python3.9/dist-packages/telebot/util.py", line 118, in raise_exceptions
    raise self.exception_info
  File "/usr/local/lib/python3.9/dist-packages/telebot/util.py", line 100, in run
    task(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/telebot/__init__.py", line 649, in __retrieve_updates
    updates = self.get_updates(offset=(self.last_update_id + 1),
  File "/usr/local/lib/python3.9/dist-packages/telebot/__init__.py", line 623, in get_updates
    json_updates = apihelper.get_updates(self.token, offset, limit, timeout, allowed_updates, long_polling_timeout)
  File "/usr/local/lib/python3.9/dist-packages/telebot/apihelper.py", line 321, in get_updates
    return _make_request(token, method_url, params=payload)
  File "/usr/local/lib/python3.9/dist-packages/telebot/apihelper.py", line 162, in _make_request
    json_result = _check_result(method_name, result)
  File "/usr/local/lib/python3.9/dist-packages/telebot/apihelper.py", line 189, in _check_result
    raise ApiTelegramException(method_name, result, result_json)
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 429. Description: Too Many Requests: retry after 5
"
2023-02-02 02:45:36,396 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 502. Description: Bad Gateway"
  • Вопрос задан
  • 563 просмотра
Подписаться 1 Средний 4 комментария
Решения вопроса 1
@EugeneVKruglov Автор вопроса
При внимательном изучении логов выяснилось, что в некоторые моменты происходит нарушение условия первичного ключа БД, а отсюда уже запускается цепь событий, приводящая к падению бота. Исправил ПК плюс вместо bot.polling(none_stop = True) сделал bot.infinity_polling. Пока все работает нормально.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы