Как отключить вывод предупреждений на python?
Я работаю с телеграм-ботами, библиотека telebot. Разрабатываю систему, которая позволяет создавать "зеркало" телеграм-бота. Столкнулся с проблемой - если пользователь добавляет бота, который уже используется в другом сервисе, то консоль начинает спамить предупреждением об этом. Бот работает по технологии bot-polling, которая конфликтует с вебхуками.
raise ApiTelegramException(method_name, result, result_json)
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 409. Description: Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first
И это предупреждение никак не отлавливается. Tru - Except их игнорирует.
logging.basicConfig(level=logging.ERROR)
не работает
warnings.filterwarnings("ignore")
аналогично
Перенаправление вывода тоже
class DevNull:
def write(self, msg):
pass
sys.stderr = DevNull()
Я пробовал удалять вебхуки, но другие подключённые сервисы их восстанавливают. Единственный вариант - вручную искать по номеру потока проблемных ботов и удалять их.
Подскажите, как можно отключить вывод таких сообщений или автоматически определить, в каких потоках они происходят. Выполнение кода эти сообщения не прерывают, бот продолжает работать, хотя и получается мешанина ответов из двух сервисов.
Ответы (2 шт):
Для каждого бота нужен отдельный хук. Хотя у вас это не описано, но подозреваю, что вы используете один хук на оба бота.
Просто добавь следующий код перед кодом бота:
import warnings
warnings.filterwarnings("ignore")