From 04d012759ca05934d3e50139af031477e62ebed6 Mon Sep 17 00:00:00 2001 From: UdoChudo Date: Tue, 17 Jun 2025 23:34:37 +0500 Subject: [PATCH] Add debug command for switch logging level for telebot Signed-off-by: UdoChudo --- app/bot/handlers/debug.py | 45 +++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/app/bot/handlers/debug.py b/app/bot/handlers/debug.py index 61dfbc8..bda4b2a 100644 --- a/app/bot/handlers/debug.py +++ b/app/bot/handlers/debug.py @@ -1,9 +1,10 @@ import logging -from telebot import logger -from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, Message +from telebot import logger as telebot_logger +from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, Message, CallbackQuery from config import ADMINS_LIST + LOG_LEVELS = { "🔴 ERROR": logging.ERROR, "🟠 WARNING": logging.WARNING, @@ -11,10 +12,26 @@ LOG_LEVELS = { "🔵 DEBUG": logging.DEBUG } -def register_handlers(bot,app, state_manager): - @bot.message_handler(commands=['debug'], func=lambda message: message.chat.id in ADMINS_LIST) - def debug_handler(message): +def set_log_level(level: int): + # Устанавливаем уровень для telebot и связанных библиотек + telebot_logger.setLevel(level) + for handler in telebot_logger.handlers: + handler.setLevel(level) + logging.getLogger("pyzabbix").setLevel(level) + logging.getLogger("requests").setLevel(level) + # logging.getLogger("urllib3").setLevel(level) + + # import http.client + # if level == logging.DEBUG: + # http.client.HTTPConnection.debuglevel = 1 + # else: + # http.client.HTTPConnection.debuglevel = 0 + + +def register_handlers(bot, app, state_manager): + @bot.message_handler(commands=['debug'], func=lambda message: message.chat.id in ADMINS_LIST) + def debug_handler(message: Message): chat_id = message.chat.id markup = InlineKeyboardMarkup(row_width=1) buttons = [InlineKeyboardButton(text=level, callback_data=f"setlog_{level}") for level in LOG_LEVELS] @@ -24,16 +41,16 @@ def register_handlers(bot,app, state_manager): bot.send_message(chat_id, "Выберите уровень логирования", reply_markup=markup) @bot.callback_query_handler(func=lambda call: call.data.startswith("setlog_")) - def handle_log_level_callback(call): - message_id = call.message.message_id + def handle_log_level_callback(call: CallbackQuery): level_text = call.data.replace("setlog_", "") + chat_id = call.message.chat.id + message_id = call.message.message_id + if level_text in LOG_LEVELS: level = LOG_LEVELS[level_text] - logger.setLevel(level) - for handler in logger.handlers: - handler.setLevel(level) - bot.answer_callback_query(call.id, f"✅ Уровень логирования: {level_text}") - bot.delete_message(call.message.chat.id, message_id) - bot.send_message(call.message.chat.id, f"📋 Логгер переведён в режим: {level_text}") + set_log_level(level) + bot.answer_callback_query(call.id, f"✅ Уровень логирования установлен: {level_text}") + bot.delete_message(chat_id, message_id) + bot.send_message(chat_id, f"📋 Логгер переведён в режим: {level_text}") else: - bot.answer_callback_query(call.id, "❌ Неизвестный уровень логирования") \ No newline at end of file + bot.answer_callback_query(call.id, "❌ Неизвестный уровень логирования")