Telezab/app/bot/handlers/debug.py
UdoChudo ccb47d527f
All checks were successful
Build and Push Docker Images / build (push) Successful in 1m28s
refactor: modularize Telegram bot and add RabbitMQ client foundation
- Рефакторинг Telegram бота на модульную структуру для удобства поддержки и расширения
- Создан общий RabbitMQ клиент для Flask и Telegram компонентов
- Подготовлена базовая архитектура для будущего масштабирования и новых функций

Signed-off-by: UdoChudo <stream@udochudo.ru>
2025-06-16 09:08:46 +05:00

39 lines
1.8 KiB
Python

import logging
from telebot import logger
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton, Message
from config import ADMINS_LIST
LOG_LEVELS = {
"🔴 ERROR": logging.ERROR,
"🟠 WARNING": logging.WARNING,
"🟢 INFO": logging.INFO,
"🔵 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):
chat_id = message.chat.id
markup = InlineKeyboardMarkup(row_width=1)
buttons = [InlineKeyboardButton(text=level, callback_data=f"setlog_{level}") for level in LOG_LEVELS]
cancel_button = InlineKeyboardButton(text="Отмена", callback_data="cancel_input")
markup.add(*buttons)
markup.add(cancel_button)
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
level_text = call.data.replace("setlog_", "")
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}")
else:
bot.answer_callback_query(call.id, "❌ Неизвестный уровень логирования")