import telebot from telebot import types import backend_bot import bot_database from utilities.telegram_utilities import show_settings_menu def handle_my_subscriptions_button(message): chat_id = message.chat.id username = f"@{message.from_user.username}" if message.from_user.username else "N/A" if not bot_database.is_whitelisted(chat_id): backend_bot.bot.send_message(chat_id, "Вы не авторизованы для использования этого бота.") telebot.logger.info(f"Unauthorized access attempt by {username} {chat_id}") return user_regions = bot_database.get_user_subscribed_regions(chat_id) if not user_regions: backend_bot.bot.send_message(chat_id, "Вы не подписаны ни на один регион.") telebot.logger.debug(f"Запрашиваем {user_regions} for {username} {chat_id}") else: user_regions.sort(key=lambda x: int(x[0])) # Сортировка по числовому значению region_id regions_list = bot_database.format_regions_list(user_regions) backend_bot.bot.send_message(chat_id, f"Ваши активные подписки:\n{regions_list}") telebot.logger.debug(f"Запрашиваем {user_regions} for {username} {chat_id}") show_settings_menu(chat_id) def handle_active_regions_button(message): chat_id = message.chat.id username = f"@{message.from_user.username}" if message.from_user.username else "N/A" if not bot_database.is_whitelisted(chat_id): backend_bot.bot.send_message(chat_id, "Вы не авторизованы для использования этого бота.") telebot.logger.info(f"Unauthorized access attempt by {username} {chat_id}") return regions = bot_database.get_sorted_regions() # Используем функцию для получения отсортированных регионов if not regions: backend_bot.bot.send_message(chat_id, "Нет активных регионов.") else: regions_list = bot_database.format_regions_list(regions) backend_bot.bot.send_message(chat_id, f"Активные регионы:\n{regions_list}") show_settings_menu(chat_id) def handle_notification_mode_button(message): chat_id = message.chat.id username = f"@{message.from_user.username}" if message.from_user.username else "N/A" telebot.logger.debug(f"Handling notification mode button for user {username} ({chat_id}).") if not bot_database.is_whitelisted(chat_id): backend_bot.bot.send_message(chat_id, "Вы неавторизованы для использования этого бота") telebot.logger.warning(f"Unauthorized access attempt by {username} ({chat_id})") return # Логируем успешное авторизованное использование бота telebot.logger.info(f"User {username} ({chat_id}) is authorized and is selecting a notification mode.") # Отправляем клавиатуру выбора режима уведомлений markup = types.InlineKeyboardMarkup() markup.add(types.InlineKeyboardButton(text="Критические события", callback_data="notification_mode_disaster")) markup.add(types.InlineKeyboardButton(text="Все события", callback_data="notification_mode_all")) backend_bot.bot.send_message(chat_id, "Выберите уровень событий мониторинга, уведомление о которых хотите получать:\n" '1. Критические события (приоритет "DISASTER") - события, являющиеся потенциальными авариями и требующие оперативного решения.\nВ Zabbix обязательно имеют тег "CALL" для оперативного привлечения инженеров к устранению.\n\n' '2. Все события (По умолчанию) - критические события, а также события Zabbix высокого ("HIGH") приоритета, имеющие потенциально значительное влияние на сервис и требующее устранение в плановом порядке.', reply_markup=markup, parse_mode="HTML") telebot.logger.info(f"Sent notification mode selection message to {username} ({chat_id}).")