58 lines
2.1 KiB
Python
58 lines
2.1 KiB
Python
"""
|
|
Конфигурация для 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}") |