Telezab/app/bot/processors/active_triggers_processor.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

57 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from telebot import types
from app.bot.keyboards.main_menu import get_main_menu
from app.bot.utils.zabbix import get_region_groups, get_all_groups_for_region, fetch_filtered_triggers
from app.bot.utils.tg_formatter import format_trigger_message # ⬅️ добавлено
def process_region_selection(bot,chat_id, region_id):
try:
groups = get_region_groups(region_id)
if not groups:
return bot.send_message(chat_id, "Нет групп хостов для этого региона.")
markup = types.InlineKeyboardMarkup()
for group in groups:
markup.add(types.InlineKeyboardButton(text=group['name'], callback_data=f"group_{group['groupid']}"))
markup.add(types.InlineKeyboardButton(text="Все группы региона\n(Долгое выполнение)", callback_data=f"all_groups_{region_id}"))
bot.send_message(chat_id, "Выберите группу хостов:", reply_markup=markup)
except Exception as e:
bot.send_message(chat_id, f"Ошибка при получении групп: {str(e)}", reply_markup=get_main_menu())
def process_group_selection(bot, chat_id, group_id):
try:
triggers = fetch_filtered_triggers(group_id)
if not triggers:
bot.send_message(chat_id, "Нет активных событий.")
else:
send_trigger_messages(chat_id, triggers)
except Exception as e:
bot.send_message(chat_id, f"Ошибка при получении событий: {str(e)}")
def process_all_groups_request(bot, chat_id, region_id):
try:
all_triggers = []
groups = get_all_groups_for_region(region_id)
for group in groups:
try:
triggers = fetch_filtered_triggers(group['groupid'])
if triggers:
all_triggers.extend(triggers)
except Exception:
continue
if all_triggers:
send_trigger_messages(chat_id, all_triggers)
else:
bot.send_message(chat_id, "Нет активных событий.")
except Exception as e:
bot.send_message(chat_id, f"Ошибка при получении данных: {str(e)}")
def send_trigger_messages(chat_id, triggers):
for trigger in triggers:
text = format_trigger_message(trigger)
bot.send_message(chat_id, text, parse_mode="MarkdownV2")