Обработка ошибки в telebot, как сделать обработку на ошибку 409?
Хочу сделать обработку ошибки 409. Это ошибка возникает когда, запущено несколько ботов одновременно с одним API
Сколько пробую, ничего не получается, вот код: (Это лишь маленькая часть кода)
import telebot
bot = telebot.TeleBot(Bot_API, parse_mode=None)
@bot.message_handler(func=lambda message: re.match(r'^/start$', message.text, re.IGNORECASE))
def command_start(message):
locale = message.from_user.language_code
bot.send_message(message.chat.id, WELCOME_MESSAGE_RUSSIAN, reply_markup=keyboard)
contact_button = types.KeyboardButton(CONFIRM_PHONE_ENGLISH, request_contact=True)
keyboard.add(contact_button)
bot.send_message(message.chat.id, WELCOME_MESSAGE_ENGLISH, reply_markup=keyboard)
while True:
try:
bot.polling(non_stop=True)
except Exception as e:
print(e)
if "Conflict" in str(e) or "409" in str(e):
print("Конфликт API, это происходит, когда вы пытаетесь запустить несколько экземпляров")
Ответы (1 шт):
Автор решения: Amgarak
→ Ссылка
try-except для bot.polling
перехватит только те ошибки, которые могут возникнут с ним при старте, а все исключения запущенные в потоках надо перехватывать уже в самих потоках.
Так что предлагаю обходной манёвр. При инициализации класса TeleBot
можно в параметре exception_handler
задать собственный обработчик исключений:
import telebot
import time
class MyExceptionHandler(telebot.ExceptionHandler):
def handle(self, exception):
print('Произошла ошибка:', exception)
# Тут уже можно логировать ошибку\отправлять уведомления админу и т.д.
return True # Если False - выведет полный стек-трейс
bot = telebot.TeleBot('TOKEN', exception_handler=MyExceptionHandler())
while True:
try:
bot.polling(none_stop=True)
except Exception as e:
print('Ошибка при запуске polling:', e)
time.sleep(5)
continue