• Защита от спама Телеграм бота в telebot?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Как-как, так же как и всегда: посмотреть, какое исключение возникает, отловить его и корректно обработать.

    Например, пусть бот упал из-за ZeroDivisionError (ошибка деления на 0), тогда оборачиваем нужную часть бота или даже главный цикл бота в try ... except и как-то это разруливаем:

    while True:
        try:
            bot.infinite_polling()
        except ZeroDivisionError:
            # чуть подождём, чтобы не было проблем, если падает слишком часто и быстро
            time.sleep(5)


    Разумеется, не всегда имеет смысл так делать прям вокруг главной функции, иногда лучше обработать исключение непосредственно в обработчике, где оно возникло, можно даже предпринять какие-то действия, например, добавить вызвавшего сбой пользователя во временнй чёрный список, чтобы игнорировать сообщения от него.
    Ответ написан
    2 комментария