All checks were successful
Build and Push Docker Images / build (push) Successful in 1m28s
- Рефакторинг Telegram бота на модульную структуру для удобства поддержки и расширения - Создан общий RabbitMQ клиент для Flask и Telegram компонентов - Подготовлена базовая архитектура для будущего масштабирования и новых функций Signed-off-by: UdoChudo <stream@udochudo.ru>
57 lines
2.4 KiB
Python
57 lines
2.4 KiB
Python
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")
|