43 lines
1.2 KiB
Python
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
|
|
)
|
|
)
|