Files
bot-telegram/app.bot/bot_config.py
2025-09-22 12:35:41 +05:00

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}")