60 lines
1.8 KiB
Python
60 lines
1.8 KiB
Python
"""
|
|
Конфигурация бота для анонимных вопросов
|
|
"""
|
|
import os
|
|
from typing import List
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
# Загружаем переменные окружения из .env файла
|
|
load_dotenv()
|
|
|
|
|
|
class Config:
|
|
"""Класс конфигурации бота"""
|
|
|
|
# Токен бота (обязательно)
|
|
BOT_TOKEN: str = os.getenv('BOT_TOKEN', '')
|
|
|
|
# Список ID администраторов (через запятую)
|
|
ADMINS: List[int] = [
|
|
int(admin_id.strip())
|
|
for admin_id in os.getenv('ADMINS', '').split(',')
|
|
if admin_id.strip()
|
|
]
|
|
|
|
# Путь к базе данных SQLite
|
|
DATABASE_PATH: str = os.getenv('DATABASE_PATH', 'database/anon_qna.db')
|
|
|
|
# Режим отладки
|
|
DEBUG: bool = os.getenv('DEBUG', 'False').lower() == 'true'
|
|
|
|
|
|
# Максимальная длина вопроса
|
|
MAX_QUESTION_LENGTH: int = int(os.getenv('MAX_QUESTION_LENGTH', '1000'))
|
|
|
|
# Максимальная длина ответа
|
|
MAX_ANSWER_LENGTH: int = int(os.getenv('MAX_ANSWER_LENGTH', '2000'))
|
|
|
|
@classmethod
|
|
def validate(cls) -> bool:
|
|
"""Проверка корректности конфигурации"""
|
|
if not cls.BOT_TOKEN:
|
|
raise ValueError("BOT_TOKEN не установлен в переменных окружения")
|
|
|
|
if not cls.ADMINS:
|
|
print("Предупреждение: ADMINS не установлен")
|
|
|
|
return True
|
|
|
|
|
|
# Создаем экземпляр конфигурации
|
|
config = Config()
|
|
|
|
# Проверяем конфигурацию при импорте
|
|
try:
|
|
config.validate()
|
|
except ValueError as e:
|
|
print(f"Ошибка конфигурации: {e}")
|
|
exit(1)
|