Files
BitrixDealsBot/apps/bot/config.py
T

43 lines
1.2 KiB
Python

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
)
)