""" Конфигурация для Telegram бота """ import os from dotenv import load_dotenv # Загружаем переменные окружения load_dotenv() class BotConfig: """Конфигурация бота""" # Telegram Bot TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN") # Database DB_HOST = os.getenv("DB_HOST", "localhost") DB_PORT = os.getenv("DB_PORT", "5432") DB_NAME = os.getenv("DB_NAME", "botdb") DB_USER = os.getenv("DB_USER", "botuser") DB_PASSWORD = os.getenv("DB_PASSWORD") # Application APP_ENV = os.getenv("APP_ENV", "development") LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO") DEBUG = os.getenv("DEBUG", "False").lower() == "true" # API Settings API_HOST = os.getenv("API_HOST", "localhost") API_PORT = int(os.getenv("API_PORT", "8000")) API_BASE_URL = os.getenv("API_BASE_URL", f"http://{API_HOST}:{API_PORT}") API_TIMEOUT = int(os.getenv("API_TIMEOUT", "30")) @classmethod def validate(cls): """Проверка обязательных конфигурационных параметров""" if not cls.TELEGRAM_BOT_TOKEN: raise ValueError("TELEGRAM_BOT_TOKEN не найден в переменных окружения") if not cls.DB_PASSWORD: raise ValueError("DB_PASSWORD не найден в переменных окружения") return True @classmethod def get_database_url(cls): """Получение URL для подключения к базе данных""" return f"postgresql://{cls.DB_USER}:{cls.DB_PASSWORD}@{cls.DB_HOST}:{cls.DB_PORT}/{cls.DB_NAME}" # Создаем экземпляр конфигурации config = BotConfig() # Проверяем конфигурацию только если не в Docker (где переменные могут быть не доступны на момент импорта) if os.getenv("DOCKER_BUILD") != "true": try: config.validate() except ValueError as e: print(f"Предупреждение конфигурации: {e}")