All checks were successful
Build and Push Docker Images / build (push) Successful in 1m18s
Signed-off-by: UdoChudo <stream@udochudo.ru>
89 lines
3.7 KiB
Python
89 lines
3.7 KiB
Python
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)}")
|
||
|