28 lines
749 B
Python
28 lines
749 B
Python
import requests
|
|
from monitor import Event, SubscriberABC
|
|
from loguru import logger
|
|
|
|
|
|
class DiscordSubscriber(SubscriberABC):
|
|
def __init__(self):
|
|
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
|
|
|
|
try:
|
|
requests.post(
|
|
self.webhook_url, json={"content": event.to_str(include_ts=False)}
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.opt(exception=True).warning(f"Error sending to Discord: {event}")
|