Обработка ошибки в 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  
→ Ссылка