sc-death-log/discord_subscriber.py
2025-05-25 17:51:29 +00:00

35 lines
970 B
Python

import requests
from monitor import Event, SubscriberABC
from loguru import logger
from monitor import Filter
class DiscordSubscriber(SubscriberABC):
def __init__(self, event_filter: Filter):
super().__init__(event_filter)
self.webhook_url: str | None = None
self.enabled: bool = True
def set_url(self, webhook_url: str) -> None:
self.webhook_url = webhook_url
def set_enabled(self, value: bool) -> None:
self.enabled = value
def consume_event(self, event: Event) -> None:
if not self.enabled:
return
if not self.filter.filter_event(event):
return
try:
r = requests.post(
self.webhook_url,
json={"content": event.to_str(include_ts=False, rich_text=True)},
)
r.raise_for_status()
except Exception:
logger.opt(exception=True).warning(f"Error sending to Discord: {event}")