import aiohttp from core.util import logs NTFY_URL = "https://ntfy.sh" log = logs.get_logger(__name__) # Actual function to send a message to a topic async def raw_sendmsg(msg, title=None, priority=None, tags=None, url=None, topic=None): if url is None: url = NTFY_URL headers = {"Title": "Pluto"} if title: headers["Title"] = title if priority: headers["Priority"] = priority if tags: headers["Tags"] = tags cast = { "headers": headers, "data": msg, } async with aiohttp.ClientSession() as session: await session.post(f"{url}/{topic}", **cast) # Sendmsg helper to send a message to a user's notification settings async def sendmsg(user, *args, **kwargs): notification_settings = user.get_notification_settings() if notification_settings.ntfy_topic is None: # No topic set, so don't send return else: topic = notification_settings.ntfy_topic await raw_sendmsg(*args, **kwargs, url=notification_settings.ntfy_url, topic=topic)