"""Проверка истории runs и отправка алерта через Telegram Bot API."""
from __future__ import annotations

import os
import sys
from pathlib import Path

import requests
from dotenv import load_dotenv

from db import recent_runs

SCRIPT_DIR = Path(__file__).resolve().parent
DB_PATH = Path.home() / "Library" / "Application Support" / "tgstat-puller" / "channels.db"
ENV_FILE = SCRIPT_DIR / ".env"


def should_alert(db_path: Path) -> bool:
    runs = recent_runs(db_path, limit=3)
    if len(runs) < 3:
        return False
    return all(r["status"] == "failed" for r in runs)


def send_alert(text: str) -> None:
    load_dotenv(ENV_FILE)
    bot_token = os.environ.get("TELEGRAM_BOT_TOKEN")
    chat_id = os.environ.get("TELEGRAM_OWNER_USER_ID")
    if not bot_token or not chat_id:
        print("В .env нет TELEGRAM_BOT_TOKEN или TELEGRAM_OWNER_USER_ID — алерт не отправлен.",
              file=sys.stderr)
        return
    r = requests.post(
        f"https://api.telegram.org/bot{bot_token}/sendMessage",
        data={"chat_id": chat_id, "text": text},
        timeout=10,
    )
    r.raise_for_status()


def main() -> None:
    if should_alert(DB_PATH):
        send_alert("⚠️ tgstat-puller: 3 запуска подряд завершились с ошибкой. Проверь логи.")


if __name__ == "__main__":
    main()
