mirror of
https://forgejo.altau.su/lego/lego-monitoring.git
synced 2026-03-10 12:45:19 +00:00
remind about persistent alerts
This commit is contained in:
parent
2c234b2fd0
commit
f691180e9b
9 changed files with 115 additions and 30 deletions
|
|
@ -5,7 +5,7 @@ from telethon.sessions import MemorySession
|
|||
|
||||
from ..core import cvars
|
||||
from .alert import Alert
|
||||
from .enum import AlertType, Severity
|
||||
from .enum import SEVERITY_TO_EMOJI, AlertType, Severity
|
||||
|
||||
|
||||
async def get_client() -> TelegramClient:
|
||||
|
|
@ -16,22 +16,14 @@ async def get_client() -> TelegramClient:
|
|||
return client
|
||||
|
||||
|
||||
def format_message(alert: Alert, persistent: bool) -> str:
|
||||
match alert.severity:
|
||||
case Severity.OK:
|
||||
severity_emoji = "🟢"
|
||||
case Severity.INFO:
|
||||
severity_emoji = "ℹ️"
|
||||
case Severity.WARNING:
|
||||
severity_emoji = "⚠️"
|
||||
case Severity.CRITICAL:
|
||||
severity_emoji = "🆘"
|
||||
persistent_marker = " - <i>ongoing</i>" if persistent else ""
|
||||
message = f"{severity_emoji} {alert.alert_type} Alert{persistent_marker}\n{alert.message}"
|
||||
def format_message(alert: Alert, note: str) -> str:
|
||||
severity_emoji = SEVERITY_TO_EMOJI[alert.severity]
|
||||
note_formatted = f" - <i>{note}</i>" if note else ""
|
||||
message = f"{severity_emoji} {alert.alert_type} Alert{note_formatted}\n{alert.message}"
|
||||
return message
|
||||
|
||||
|
||||
async def send_alert(alert: Alert, persistent: bool = False) -> None:
|
||||
async def send_alert(alert: Alert, note: str = "") -> None:
|
||||
try:
|
||||
client = cvars.tg_client.get()
|
||||
except LookupError: # being called standalone
|
||||
|
|
@ -43,7 +35,7 @@ async def send_alert(alert: Alert, persistent: bool = False) -> None:
|
|||
else:
|
||||
... # temp_client = False
|
||||
room_id = cvars.config.get().telegram.room_id
|
||||
message = format_message(alert, persistent)
|
||||
message = format_message(alert, note)
|
||||
await client.send_message(entity=room_id, message=message)
|
||||
# if temp_client:
|
||||
# await client.close()
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ class AlertType(StrEnum):
|
|||
TEMP = "TEMP"
|
||||
TEST = "TEST"
|
||||
VULN = "VULN"
|
||||
REMIND = "REMIND"
|
||||
# LOGIN = "LOGIN"
|
||||
# SMART = "SMART" # TODO
|
||||
# RAID = "RAID"
|
||||
|
|
@ -22,3 +23,11 @@ class Severity(IntEnum):
|
|||
INFO = 1
|
||||
WARNING = 2
|
||||
CRITICAL = 3
|
||||
|
||||
|
||||
SEVERITY_TO_EMOJI = {
|
||||
Severity.OK: "🟢",
|
||||
Severity.INFO: "ℹ️",
|
||||
Severity.WARNING: "⚠️",
|
||||
Severity.CRITICAL: "🆘",
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue