66 lines
1.4 KiB
Python
66 lines
1.4 KiB
Python
|
from dataclasses import dataclass
|
|||
|
from environs import Env
|
|||
|
|
|||
|
|
|||
|
@dataclass
|
|||
|
class DatabaseConfig:
|
|||
|
database: str
|
|||
|
host: str
|
|||
|
user: str
|
|||
|
password: str
|
|||
|
|
|||
|
|
|||
|
@dataclass
|
|||
|
class TgBot:
|
|||
|
token: str
|
|||
|
admin_ids: list[int]
|
|||
|
superadmin: int
|
|||
|
|
|||
|
|
|||
|
@dataclass
|
|||
|
class TableSchemas:
|
|||
|
main_table: str
|
|||
|
main_table_cols: str
|
|||
|
|
|||
|
|
|||
|
@dataclass
|
|||
|
class ChatBot:
|
|||
|
url: str
|
|||
|
api_key: str
|
|||
|
bot_model: str
|
|||
|
|
|||
|
|
|||
|
@dataclass
|
|||
|
class Config:
|
|||
|
tg_bot: TgBot
|
|||
|
db: DatabaseConfig
|
|||
|
table: TableSchemas
|
|||
|
chat_bot: ChatBot
|
|||
|
|
|||
|
|
|||
|
def config_loader(path: str | None = None) -> Config:
|
|||
|
env: Env = Env()
|
|||
|
env.read_env(path)
|
|||
|
# Загружаем конфигурацию из .env файла и возвращаем его экземпляром Config dataclass'а'
|
|||
|
return Config(
|
|||
|
tg_bot=TgBot(
|
|||
|
token=env('BOT_TOKEN'),
|
|||
|
admin_ids=list(map(int, env.list('ADMIN_IDS'))),
|
|||
|
superadmin=env('superadmin')
|
|||
|
),
|
|||
|
db=DatabaseConfig(
|
|||
|
database=env('DATABASE'),
|
|||
|
host=env('DB_HOST'),
|
|||
|
user=env('DB_USER'),
|
|||
|
password=env('DB_PASSWORD')
|
|||
|
),
|
|||
|
table=TableSchemas(
|
|||
|
main_table=env('MAIN_TABLE'),
|
|||
|
main_table_cols=env('MAIN_TABLE_COLS'),
|
|||
|
),
|
|||
|
chat_bot=ChatBot(
|
|||
|
url=env('CHAT_BOT_URL'),
|
|||
|
api_key=env('CHAT_BOT_API_KEY'),
|
|||
|
bot_model=env('BOT_MODEL')
|
|||
|
)
|
|||
|
)
|