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