#!/usr/bin/env python3 """ Send Telegram alerts for harness issues. Requires TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID in environment or .env """ import os import sys import requests def send_alert(message, level="WARNING"): """Send alert to admin via Telegram.""" token = os.getenv("TELEGRAM_BOT_TOKEN") chat_id = os.getenv("TELEGRAM_CHAT_ID") if not token or not chat_id: # Try loading from .env try: with open('.env', 'r') as f: for line in f: if line.startswith('TELEGRAM_BOT_TOKEN='): token = line.split('=', 1)[1].strip().strip('"') elif line.startswith('TELEGRAM_CHAT_ID='): chat_id = line.split('=', 1)[1].strip().strip('"') except: pass if not token or not chat_id: print(f"Cannot send alert: TELEGRAM_BOT_TOKEN or TELEGRAM_CHAT_ID missing", file=sys.stderr) return False emoji = {"CRITICAL": "🔴", "WARNING": "🟡", "INFO": "🟢"}.get(level, "⚪") full_message = f"{emoji} *Void Harness Alert* ({level})\n\n{message}" try: url = f"https://api.telegram.org/bot{token}/sendMessage" payload = { "chat_id": chat_id, "text": full_message, "parse_mode": "Markdown" } resp = requests.post(url, json=payload, timeout=10) return resp.ok except Exception as e: print(f"Failed to send alert: {e}", file=sys.stderr) return False if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: alert_admin.py [level]") sys.exit(1) message = sys.argv[1] level = sys.argv[2] if len(sys.argv) > 2 else "WARNING" success = send_alert(message, level) sys.exit(0 if success else 1)