"""Алерты в телеграм через бота (тот же, что у планёрки и tasks-bot)."""
from __future__ import annotations

import sys

import requests

API = "https://api.telegram.org/bot{token}/sendMessage"


def notifier(token: str | None, chat_id: str | None):
    """Возвращает функцию отправки. Без настроек — печатает в stderr.

    Молчать нельзя: алерт о трёх падениях подряд и есть тот случай, ради
    которого всё затевалось.
    """
    def send(text: str) -> bool:
        if not token or not chat_id:
            print("нет TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID, сообщение: {}".format(text),
                  file=sys.stderr)
            return False
        try:
            resp = requests.post(API.format(token=token),
                                 data={"chat_id": chat_id, "text": text}, timeout=30)
        except requests.RequestException as exc:
            print("телеграм недоступен: {}".format(
                str(exc).replace(token, "***")), file=sys.stderr)
            return False
        if resp.status_code >= 400:
            print("телеграм ответил {}".format(resp.status_code), file=sys.stderr)
            return False
        return True

    return send
