import os from dataclasses import dataclass DEFAULT_TAKE_TO_WORK_STAGE_ID = "PREPARATION" def _required(name: str) -> str: value = os.getenv(name) if not value: raise RuntimeError(f"{name} is not set") return value @dataclass(frozen=True) class BotConfig: """Настройки процесса Telegram-бота.""" bot_token: str database_url: str bitrix_client_id: str bitrix_client_secret: str token_encryption_key: str oauth_token_url: str take_to_work_stage_id: str = DEFAULT_TAKE_TO_WORK_STAGE_ID @classmethod def from_env(cls) -> "BotConfig": return cls( bot_token=_required("BOT_TOKEN"), database_url=_required("DATABASE_URL"), bitrix_client_id=_required("BITRIX_CLIENT_ID"), bitrix_client_secret=_required("BITRIX_CLIENT_SECRET"), token_encryption_key=_required("TOKEN_ENCRYPTION_KEY"), oauth_token_url=os.getenv( "BITRIX_OAUTH_TOKEN_URL", "https://oauth.bitrix.info/oauth/token/", ), take_to_work_stage_id=os.getenv( "BITRIX_TAKE_TO_WORK_STAGE_ID", DEFAULT_TAKE_TO_WORK_STAGE_ID ) )