"""Run the separate bot without a public domain/webhook."""

from __future__ import annotations

import logging
import time

from baelish_bot.config import Config
from baelish_bot.runtime import Processor
from baelish_bot.telegram_api import TelegramError


def main() -> None:
    logging.basicConfig(level=logging.INFO)
    processor = Processor(Config.load())
    processor.ensure_ready()
    processor.telegram.delete_webhook()
    offset = None
    print("ربات لرد بیلیش در حالت polling اجرا شد. برای توقف Ctrl+C بزنید.")
    while True:
        try:
            updates = processor.telegram.get_updates(offset, timeout=30)
            for update in updates:
                processor.process(update)
                if isinstance(update.get("update_id"), int):
                    offset = update["update_id"] + 1
        except TelegramError as exc:
            delay = max(3, min(300, exc.retry_after or 3))
            logging.warning("Telegram error (%s); retrying in %ss", exc.method, delay)
            time.sleep(delay)
        except KeyboardInterrupt:
            break
        except Exception:
            logging.exception("Polling loop failed")
            time.sleep(3)


if __name__ == "__main__":
    main()
