#!/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()