#!/usr/bin/python3 import os import socket import sys import urllib.parse import urllib.request def main() -> int: token = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip() user_id = os.environ.get("TELEGRAM_USER_ID", "").strip() if not token or not user_id: print("Gyro failure notification skipped: Telegram credentials are absent") return 1 proxy = os.environ.get("TELEGRAM_PROXY", "").strip() handlers = [urllib.request.ProxyHandler({"http": proxy, "https": proxy})] if proxy else [] opener = urllib.request.build_opener(*handlers) failed_unit = sys.argv[1] if len(sys.argv) > 1 else "gyro.service" message = f"Gyro job failed on {socket.gethostname()}: {failed_unit}. Check journalctl -u gyro.service." body = urllib.parse.urlencode({"chat_id": user_id, "text": message}).encode() request = urllib.request.Request( f"https://api.telegram.org/bot{token}/sendMessage", data=body, method="POST", ) try: with opener.open(request, timeout=20) as response: return 0 if response.status == 200 else 1 except Exception as exc: print(f"Gyro failure notification failed: {type(exc).__name__}") return 1 if __name__ == "__main__": raise SystemExit(main())