Add debug command for switch logging level for telebot
Signed-off-by: UdoChudo <stream@udochudo.ru>
This commit is contained in:
parent
ccb47d527f
commit
04d012759c
@ -1,9 +1,10 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from telebot import logger
|
from telebot import logger as telebot_logger
|
||||||
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, Message
|
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, Message, CallbackQuery
|
||||||
|
|
||||||
from config import ADMINS_LIST
|
from config import ADMINS_LIST
|
||||||
|
|
||||||
LOG_LEVELS = {
|
LOG_LEVELS = {
|
||||||
"🔴 ERROR": logging.ERROR,
|
"🔴 ERROR": logging.ERROR,
|
||||||
"🟠 WARNING": logging.WARNING,
|
"🟠 WARNING": logging.WARNING,
|
||||||
@ -11,10 +12,26 @@ LOG_LEVELS = {
|
|||||||
"🔵 DEBUG": logging.DEBUG
|
"🔵 DEBUG": logging.DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
def register_handlers(bot,app, state_manager):
|
def set_log_level(level: int):
|
||||||
@bot.message_handler(commands=['debug'], func=lambda message: message.chat.id in ADMINS_LIST)
|
# Устанавливаем уровень для telebot и связанных библиотек
|
||||||
def debug_handler(message):
|
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
|
chat_id = message.chat.id
|
||||||
markup = InlineKeyboardMarkup(row_width=1)
|
markup = InlineKeyboardMarkup(row_width=1)
|
||||||
buttons = [InlineKeyboardButton(text=level, callback_data=f"setlog_{level}") for level in LOG_LEVELS]
|
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.send_message(chat_id, "Выберите уровень логирования", reply_markup=markup)
|
||||||
|
|
||||||
@bot.callback_query_handler(func=lambda call: call.data.startswith("setlog_"))
|
@bot.callback_query_handler(func=lambda call: call.data.startswith("setlog_"))
|
||||||
def handle_log_level_callback(call):
|
def handle_log_level_callback(call: CallbackQuery):
|
||||||
message_id = call.message.message_id
|
|
||||||
level_text = call.data.replace("setlog_", "")
|
level_text = call.data.replace("setlog_", "")
|
||||||
|
chat_id = call.message.chat.id
|
||||||
|
message_id = call.message.message_id
|
||||||
|
|
||||||
if level_text in LOG_LEVELS:
|
if level_text in LOG_LEVELS:
|
||||||
level = LOG_LEVELS[level_text]
|
level = LOG_LEVELS[level_text]
|
||||||
logger.setLevel(level)
|
set_log_level(level)
|
||||||
for handler in logger.handlers:
|
bot.answer_callback_query(call.id, f"✅ Уровень логирования установлен: {level_text}")
|
||||||
handler.setLevel(level)
|
bot.delete_message(chat_id, message_id)
|
||||||
bot.answer_callback_query(call.id, f"✅ Уровень логирования: {level_text}")
|
bot.send_message(chat_id, f"📋 Логгер переведён в режим: {level_text}")
|
||||||
bot.delete_message(call.message.chat.id, message_id)
|
|
||||||
bot.send_message(call.message.chat.id, f"📋 Логгер переведён в режим: {level_text}")
|
|
||||||
else:
|
else:
|
||||||
bot.answer_callback_query(call.id, "❌ Неизвестный уровень логирования")
|
bot.answer_callback_query(call.id, "❌ Неизвестный уровень логирования")
|
||||||
Loading…
x
Reference in New Issue
Block a user