Implement user-specific question numbering and update database schema. Added triggers for automatic question numbering and adjustments upon deletion. Enhanced CRUD operations to manage user_question_number effectively.

This commit is contained in:
2025-09-06 18:35:12 +03:00
parent 50be010026
commit 596a2fa813
111 changed files with 16847 additions and 65 deletions

59
config/config.py Normal file
View File

@@ -0,0 +1,59 @@
"""
Конфигурация бота для анонимных вопросов
"""
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)