import os
from dataclasses import dataclass

from dotenv import load_dotenv


@dataclass(frozen=True)
class BotSettings:
    token: str
    username: str
    backend_api_url: str
    backend_api_token: str


def load_settings() -> BotSettings:
    load_dotenv()
    token = os.environ.get('TELEGRAM_BOT_TOKEN', '').strip()
    if not token:
        raise RuntimeError(
            'TELEGRAM_BOT_TOKEN не задан. Скопируйте .env.example в .env '
            'и добавьте токен, полученный у @BotFather.'
        )
    backend_api_token = os.environ.get('TELEGRAM_BOT_API_TOKEN', '').strip()
    if not backend_api_token:
        raise RuntimeError(
            'TELEGRAM_BOT_API_TOKEN не задан. Он должен совпадать со значением '
            'в .env Django.'
        )
    return BotSettings(
        token=token,
        username=os.environ.get(
            'TELEGRAM_BOT_USERNAME',
            'platforma_legal_english_test_bot',
        ).lstrip('@'),
        backend_api_url=os.environ.get(
            'BACKEND_API_URL',
            'http://127.0.0.1:8000/api',
        ).rstrip('/'),
        backend_api_token=backend_api_token,
    )
