persistent alerts

This commit is contained in:
Alex Tau 2025-06-05 22:52:57 +03:00
parent eef6ec59b0
commit 2c234b2fd0
5 changed files with 31 additions and 21 deletions

View file

@ -16,7 +16,7 @@ async def get_client() -> TelegramClient:
return client
def format_message(alert: Alert) -> str:
def format_message(alert: Alert, persistent: bool) -> str:
match alert.severity:
case Severity.OK:
severity_emoji = "🟢"
@ -26,11 +26,12 @@ def format_message(alert: Alert) -> str:
severity_emoji = "⚠️"
case Severity.CRITICAL:
severity_emoji = "🆘"
message = f"{severity_emoji} {alert.alert_type} Alert\n{alert.message}"
persistent_marker = " - <i>ongoing</i>" if persistent else ""
message = f"{severity_emoji} {alert.alert_type} Alert{persistent_marker}\n{alert.message}"
return message
async def send_alert(alert: Alert) -> None:
async def send_alert(alert: Alert, persistent: bool = False) -> None:
try:
client = cvars.tg_client.get()
except LookupError: # being called standalone
@ -42,7 +43,7 @@ async def send_alert(alert: Alert) -> None:
else:
... # temp_client = False
room_id = cvars.config.get().telegram.room_id
message = format_message(alert)
message = format_message(alert, persistent)
await client.send_message(entity=room_id, message=message)
# if temp_client:
# await client.close()

View file

@ -10,7 +10,7 @@ class CurrentAlerts(list[Alert]):
for a in self:
if max_severity is None or a.severity > max_severity:
max_severity = a.severity
return a.severity
return max_severity
def get_types(self) -> set[AlertType]:
types = set()