PyTelegramBotApi Error code: 429. Description: Too Many Requests: retry after 237

Рейтинг: 0Ответов: 0Опубликовано: 03.07.2023

писал бота-предложку для телеграм группы, через несколько часов бот стал выдавать ошибку 429. немного поясню - пользователь отправляет в бота картинку/текст, и выбирает кнопку "отправить на рассмотрение". после этого бот пересылает это в админский чат, где админы получают кнопки одобрить/отклонить. после перезапуска бота ничего не происходит, та же 429 ошибка. читал в интернете, что это связано с задержкой в 30 секунд.

код ошибки ниже

$ python main_bot.py 
2023-07-02 23:24:18,768 (__init__.py:1083 MainThread) ERROR - TeleBot: "Threaded polling exception: A request to the Telegram API was unsuccessful. Error code: 429. De
scription: Too Many Requests: retry after 237"
2023-07-02 23:24:18,768 (__init__.py:1085 MainThread) ERROR - TeleBot: "Exception traceback:
Traceback (most recent call last):
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/__init__.py", line 1074, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/util.py", line 147, in raise_exceptions
    raise self.exception_info
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/util.py", line 90, in run
    task(*args, **kwargs)
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/__init__.py", line 6770, in _run_middlewares_and_handler
    result = handler['function'](message)
  File "/home/haltenny/main_bot.py", line 43, in callback_message
    callback_admin(callback)
  File "/home/haltenny/main_bot.py", line 33, in callback_admin
    bot.forward_message(TO_CHAT_ID, callback.message.chat.id, callback.message.message_id - 1)
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/__init__.py", line 1593, in forward_message
    apihelper.forward_message(self.token, chat_id, from_chat_id, message_id, disable_notification, timeout, protect_content,
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/apihelper.py", line 401, in forward_message
    return _make_request(token, method_url, params=payload)
  File "/home/haltenny/.local/lib/python3.10/site-packages/telebot/apihelper.py", line 162, in _make_request
    json_result = _check_result(method_name, result)
  File "/home/haltenny/.local/lib/python3.10/site-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 237

Код самого бота:

import telebot
from telebot import types
import time

bot = telebot.TeleBot("78")
TO_CHAT_ID = "78"


@bot.message_handler(commands=['start'])
def main(message):
    if message.from_user.last_name == None:
        bot.send_message(message.chat.id, f"<b>{message.from_user.first_name}, приветствуем тебя в боте.</b> Отправь мне мем, и после проверки модерации он появится на канале. Злоупотребление ботом карается бананом.", parse_mode="html")
    else:
        bot.send_message(message.chat.id, f"<b>{message.from_user.first_name} {message.from_user.last_name}, приветствуем тебя в боте.</b> Отправь мне мем, и после проверки модерации он появится на канале. Злоупотребление ботом карается бананом.", parse_mode="html")


@bot.message_handler(commands=['help'])
def main(message):
    bot.send_message(message.chat.id, """Это бот-предложка канала. Вы можете отправить ваш мем, который отправится на модерацию. Если администраторы одобрят ваш мем, то он появится в канале.""")

@bot.message_handler(content_types=["photo", "video", "sticker", "text", "audio", "voice", "video_note"])
def photo(message):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Отправить мем на модерацию", callback_data="moderate_meme"))
    markup.add(types.InlineKeyboardButton("Отправить сообщение администрации", callback_data="send_to_admins"))
    markup.add(types.InlineKeyboardButton("Ничего", callback_data="leave"))
    bot.reply_to(message, "Что вы хотите сделать с этим сообщением?", reply_markup=markup)

def callback_admin(callback):
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Да", callback_data="allowed"))
    markup.add(types.InlineKeyboardButton("Нет", callback_data="not_allowed"))
    bot.forward_message(TO_CHAT_ID, callback.message.chat.id, callback.message.message_id - 1)
    bot.send_message(TO_CHAT_ID, text="Одобрить пост?", reply_markup=markup)

@bot.callback_query_handler(func=lambda callback: True)
def callback_message(callback):

    if callback.data == "moderate_meme":
        time.sleep(1)
        bot.edit_message_text("Мем отправлен на модерацию админам", callback.message.chat.id, callback.message.message_id)
        time.sleep(30)
        callback_admin(callback)

    if callback.data == "send_to_admins":
        time.sleep(1)
        bot.edit_message_text("Сообщение отправлено администраторам канала", callback.message.chat.id, callback.message.message_id)
        time.sleep(30)
        bot.forward_message(TO_CHAT_ID, callback.message.chat.id, callback.message.message_id - 1)

    if callback.data == "leave":
        time.sleep(1)
        bot.edit_message_text("Сообщение проигнорировано", callback.message.chat.id, callback.message.message_id)

    if callback.data == "allowed":
        time.sleep(1)
        bot.forward_message(000, callback.message.chat.id, callback.message.message_id - 1)
        bot.edit_message_text(f"Мем одобрен", callback.message.chat.id, callback.message.message_id)

    if callback.data == "not_allowed":
        time.sleep(1)
        bot.edit_message_text("Пост отклонён", callback.message.chat.id, callback.message.message_id)

bot.polling(none_stop=True)



Ответы

Ответов пока нет.