2024-09-20 15:26:28 +00:00
|
|
|
|
from config import settings
|
|
|
|
|
import re
|
|
|
|
|
import asyncio
|
|
|
|
|
import logging
|
|
|
|
|
from aiogram import Bot, Dispatcher, types
|
|
|
|
|
from aiogram import F
|
|
|
|
|
|
|
|
|
|
import zabbix_api
|
|
|
|
|
|
|
|
|
|
bot = Bot(token=settings.tg.token)
|
|
|
|
|
dp = Dispatcher()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dp.callback_query(F.data.startswith("ack_"))
|
|
|
|
|
async def event_acknowledge(callback: types.CallbackQuery):
|
|
|
|
|
alert_id = int(callback.data.split("_")[1])
|
|
|
|
|
await zabbix_api.event_acknowledge(alert_id)
|
|
|
|
|
await callback.message.answer(f"Алерт с id {alert_id} подтверждён и взят в работу")
|
|
|
|
|
await callback.answer()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dp.callback_query(F.data.startswith("m1h_"))
|
|
|
|
|
async def maintenance_1h(callback: types.CallbackQuery):
|
|
|
|
|
host_id = int(callback.data.split("_")[1])
|
|
|
|
|
host_name = await zabbix_api.get_host_by_id(host_id=host_id)
|
|
|
|
|
await zabbix_api.maintenance_by_host_id(
|
|
|
|
|
host_id=host_id, period=60 * 60, host_name=host_name
|
|
|
|
|
)
|
|
|
|
|
await callback.message.answer(f"Закинул в обслуживание {host_name} на час")
|
|
|
|
|
await callback.answer()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@dp.callback_query(F.data.startswith("m1d_"))
|
|
|
|
|
async def maintenance_1d(callback: types.CallbackQuery):
|
|
|
|
|
host_id = int(callback.data.split("_")[1])
|
|
|
|
|
host_name = await zabbix_api.get_host_by_id(host_id=host_id)
|
|
|
|
|
await zabbix_api.maintenance_by_host_id(
|
|
|
|
|
host_id=host_id, period=60 * 60 * 24, host_name=host_name
|
|
|
|
|
)
|
|
|
|
|
await callback.message.answer(f"Закинул в обслуживание {host_name} на сутки")
|
|
|
|
|
await callback.answer()
|
|
|
|
|
|
2024-09-24 18:44:56 +00:00
|
|
|
|
@dp.message()
|
|
|
|
|
async def add_event_comment(message: types.Message):
|
|
|
|
|
await message.answer(f"Получен текст {message.text}")
|
2024-09-24 18:57:40 +00:00
|
|
|
|
|
2024-09-20 15:26:28 +00:00
|
|
|
|
@dp.message()
|
|
|
|
|
async def add_event_comment(message: types.Message):
|
|
|
|
|
if message.reply_to_message:
|
|
|
|
|
original_message = message.reply_to_message.text
|
|
|
|
|
match = re.search(
|
|
|
|
|
r"^Алерт с id (\d+) подтверждён и взят в работу$",
|
|
|
|
|
original_message,
|
|
|
|
|
)
|
|
|
|
|
if match:
|
|
|
|
|
comment_text = f"@{message.from_user.username} -> {message.text}"
|
|
|
|
|
await zabbix_api.add_event_comment(
|
|
|
|
|
event_id=int(match.group(1)), msg=comment_text
|
|
|
|
|
)
|
|
|
|
|
await message.answer(f"Комментарий добавлен")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def main():
|
|
|
|
|
await dp.start_polling(bot)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
asyncio.run(main())
|