""" Notification tools — proactively send messages to user channels. nc_talk_send routes through notification.py → channels.json. email_send uses the server SMTP config from .env (smtp_server, smtp_from_*). """ import asyncio import logging from persona import get_user logger = logging.getLogger(__name__) async def email_send(to: str, subject: str, body: str) -> str: """Send an email via the server's configured SMTP account.""" from email_utils import send_email ok = await asyncio.to_thread( send_email, to_email=to, subject=subject, body_text=body, body_html=body.replace("\n", "
"), ) if ok: return f"Email sent to {to}." return "Failed to send email — check SMTP configuration in .env." async def nc_talk_send(message: str) -> str: """Send a message to the user via their configured notification channel. Channel is resolved from the user's channels.json (notification_channel key). Falls back to Nextcloud Talk if configured. No-op if no channel is set. """ from notification import notify username = get_user() try: await notify(username, message) return f"Message sent to {username}'s notification channel." except Exception as e: logger.warning("nc_talk_send error for %s: %s", username, e) return f"Failed to send notification: {e}"