add algam

This commit is contained in:
2025-09-22 11:54:42 +05:00
parent 3c418a97b4
commit 5b9c55a4dc
34 changed files with 4700 additions and 426 deletions

52
bot_config.py Normal file
View File

@@ -0,0 +1,52 @@
"""
Конфигурация для 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"
@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}")