Telezab/app/bot/processors/active_triggers_processor.py
UdoChudo 2b65d11622
All checks were successful
Build and Push Docker Images / build (push) Successful in 1m18s
fix: (active triggers) add additional error message when zabbix server is unreachable, add error logging to console
Signed-off-by: UdoChudo <stream@udochudo.ru>
2025-06-25 16:05:54 +05:00

89 lines
3.7 KiB
Python
Raw Permalink 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 logger
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
from app.bot.keyboards.groups import create_groups_keyboard
from app.bot.keyboards.main_menu import get_main_menu
from app.bot.utils.tg_formatter import format_trigger_for_tg
from app.bot.utils.zabbix_alt import (
get_region_groups,
get_all_groups_for_region,
fetch_triggers_data)
def process_region_selection(bot, chat_id, region_id):
try:
groups = get_region_groups(region_id)
if groups is None:
return bot.send_message(chat_id, "❌ Сервер Zabbix временно недоступен. Попробуйте позже.", reply_markup=get_main_menu())
if not groups:
return bot.send_message(chat_id, "Нет групп хостов для этого региона.", reply_markup=get_main_menu())
markup = create_groups_keyboard(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_triggers_data(group_id)
if triggers is None:
return bot.send_message(chat_id, "❌ Сервер Zabbix временно недоступен. Попробуйте позже.")
if not triggers:
return bot.send_message(chat_id, "Нет активных событий.")
for trigger in triggers:
try:
text, url = format_trigger_for_tg(trigger)
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton(text="Открыть график", url=url))
bot.send_message(chat_id, text, reply_markup=markup, parse_mode="HTML")
except Exception as e:
logger.error(f"[Bot] Ошибка при отправке сообщения о триггере: {e}")
continue
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)
zabbix_error = False
for group in groups:
try:
triggers = fetch_triggers_data(group['groupid'])
if triggers is None:
zabbix_error = True
continue
if triggers:
all_triggers.extend(triggers)
except Exception as e:
logger.error(f"[Bot] Ошибка при обработке группы {group['name']}: {e}")
continue
if zabbix_error and not all_triggers:
return bot.send_message(chat_id, "❌ Сервер Zabbix временно недоступен. Попробуйте позже.")
if not all_triggers:
return bot.send_message(chat_id, "Нет активных событий.")
for trigger in all_triggers:
try:
text, url = format_trigger_for_tg(trigger)
markup = InlineKeyboardMarkup()
markup.add(InlineKeyboardButton(text="Открыть график", url=url))
bot.send_message(chat_id, text, reply_markup=markup, parse_mode="HTML")
except Exception as e:
logger.error(f"[Bot] Ошибка при отправке события: {e}")
continue
except Exception as e:
bot.send_message(chat_id, f"Ошибка при получении данных: {str(e)}")