init commit

This commit is contained in:
2025-09-11 07:34:50 +09:00
commit 5ddc540f9e
36 changed files with 5103 additions and 0 deletions

135
test_bot.py Normal file
View File

@@ -0,0 +1,135 @@
#!/usr/bin/env python3
"""
Тестовый запуск бота - проверка импортов и конфигурации
"""
import sys
import os
# Добавляем путь к проекту
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, project_root)
def test_imports():
"""Тестирование всех импортов"""
print("🔍 Проверка импортов...")
try:
from config.config import config
print("✅ config.config - OK")
except ImportError as e:
print(f"❌ config.config - {e}")
return False
try:
from src.database.database import DatabaseManager
print("✅ src.database.database - OK")
except ImportError as e:
print(f"❌ src.database.database - {e}")
return False
try:
from src.services.csv_service import CSVQuizLoader, QuizGenerator
print("✅ src.services.csv_service - OK")
except ImportError as e:
print(f"❌ src.services.csv_service - {e}")
return False
# Проверим aiogram
try:
import aiogram
print(f"✅ aiogram {aiogram.__version__} - OK")
except ImportError as e:
print(f"❌ aiogram - {e}")
return False
return True
def test_config():
"""Тестирование конфигурации"""
print("\n⚙️ Проверка конфигурации...")
try:
from config.config import config
print(f"🔑 BOT_TOKEN: {'✅ Настроен' if config.bot_token and config.bot_token != 'your_bot_token_here' else 'Не настроен'}")
print(f"📁 DATABASE_PATH: {config.database_path}")
print(f"📁 CSV_DATA_PATH: {config.csv_data_path}")
print(f"🎲 QUESTIONS_PER_QUIZ: {config.questions_per_quiz}")
print(f"🎯 GUEST_MODE_ENABLED: {config.guest_mode_enabled}")
print(f"📚 TEST_MODE_ENABLED: {config.test_mode_enabled}")
return True
except Exception as e:
print(f"❌ Ошибка конфигурации: {e}")
return False
async def test_database():
"""Тестирование базы данных"""
print("\n🗄️ Проверка базы данных...")
try:
from src.database.database import DatabaseManager
from config.config import config
db = DatabaseManager(config.database_path)
# Проверим наличие файла БД
if os.path.exists(config.database_path):
print(f"✅ База данных найдена: {config.database_path}")
else:
print(f"❌ База данных не найдена: {config.database_path}")
return False
# Проверим тесты
tests = await db.get_tests_by_category()
print(f"✅ Найдено тестов: {len(tests)}")
for test in tests[:3]: # Показываем первые 3
questions = await db.get_random_questions(test['id'], 1)
print(f" 📚 {test['name']}: {len(questions)} вопросов доступно")
return True
except Exception as e:
print(f"❌ Ошибка базы данных: {e}")
import traceback
traceback.print_exc()
return False
def main():
"""Основная функция тестирования"""
print("🤖 Тестирование Quiz Bot")
print("=" * 50)
# Тест импортов
if not test_imports():
print("\n❌ Ошибка импортов! Проверьте установку зависимостей.")
return False
# Тест конфигурации
if not test_config():
print("\n❌ Ошибка конфигурации!")
return False
# Тест базы данных (асинхронно)
import asyncio
if not asyncio.run(test_database()):
print("\n❌ Ошибка базы данных!")
return False
print("\n🎉 Все тесты прошли успешно!")
# Проверим готовность к запуску
from config.config import config
if config.bot_token and config.bot_token not in ['your_bot_token_here', 'test_token_for_demo_purposes']:
print("\n✅ Бот готов к запуску!")
print("🚀 Запустите: python src/bot.py")
else:
print("\n⚠️ Для запуска реального бота:")
print("1. Получите токен у @BotFather")
print("2. Замените BOT_TOKEN в .env файле")
print("3. Запустите: python src/bot.py")
return True
if __name__ == "__main__":
main()