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

178
status.py Normal file
View File

@@ -0,0 +1,178 @@
#!/usr/bin/env python3
"""
Финальный отчет о состоянии Quiz Bot проекта
"""
import os
import sys
from pathlib import Path
# Добавляем путь к проекту
project_root = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, project_root)
def print_banner():
print("🤖 QUIZ BOT - ФИНАЛЬНЫЙ ОТЧЕТ")
print("=" * 60)
def check_structure():
"""Проверка структуры проекта"""
print("📁 СТРУКТУРА ПРОЕКТА:")
required_structure = {
'src/bot.py': 'Основной файл бота',
'src/database/database.py': 'Менеджер базы данных',
'src/services/csv_service.py': 'Сервис загрузки CSV',
'config/config.py': 'Конфигурация',
'data/quiz_bot.db': 'База данных SQLite',
'requirements.txt': 'Зависимости Python',
'.env': 'Переменные окружения',
'README.md': 'Документация',
'Makefile': 'Команды автоматизации'
}
all_good = True
for file_path, description in required_structure.items():
if Path(file_path).exists():
print(f"{file_path:<30} - {description}")
else:
print(f"{file_path:<30} - {description}")
all_good = False
# Проверим CSV файлы
csv_files = list(Path("data").glob("*.csv"))
print(f" ✅ data/*.csv - {len(csv_files)} CSV файлов с тестами")
return all_good
def check_database():
"""Проверка базы данных"""
print("\n🗄️ БАЗА ДАННЫХ:")
try:
from src.database.database import DatabaseManager
from config.config import config
import asyncio
async def check():
db = DatabaseManager(config.database_path)
tests = await db.get_tests_by_category()
print(f" ✅ Подключение к БД работает")
print(f" ✅ Найдено тестов: {len(tests)}")
total_questions = 0
for test in tests:
questions = await db.get_random_questions(test['id'], 100)
total_questions += len(questions)
print(f" 📚 {test['name']}: {len(questions)} вопросов")
print(f"Всего вопросов в базе: {total_questions}")
asyncio.run(check())
return True
except Exception as e:
print(f" ❌ Ошибка БД: {e}")
return False
def check_config():
"""Проверка конфигурации"""
print("\n⚙️ КОНФИГУРАЦИЯ:")
try:
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(" ✅ BOT_TOKEN настроен")
bot_ready = True
else:
print(" ⚠️ BOT_TOKEN не настроен (нужен для реального запуска)")
bot_ready = False
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 bot_ready
except Exception as e:
print(f" ❌ Ошибка конфигурации: {e}")
return False
def show_features():
"""Показать возможности"""
print("\n🎮 ВОЗМОЖНОСТИ:")
print(" 🎯 Гостевой режим - быстрые викторины (5 вопросов)")
print(" 📚 Режим тестирования - полные тесты (10 вопросов)")
print(" 📊 Система статистики и прогресса")
print(" 🇰🇷 100 вопросов по корейскому языку (5 уровней)")
print(" 📱 Команды: /start, /help, /stats, /stop")
print(" 🔄 Легкое добавление новых тестов через CSV")
def show_commands():
"""Показать команды"""
print("\n🚀 КОМАНДЫ ДЛЯ ЗАПУСКА:")
print(" make demo - Демонстрация без Telegram")
print(" make test - Интерактивный тест в консоли")
print(" make test-bot - Проверка импортов")
print(" make run - Запуск бота в Telegram")
print(" make help - Полная справка")
def show_instructions():
"""Инструкции по настройке"""
print("\n📋 ДЛЯ ЗАПУСКА РЕАЛЬНОГО БОТА:")
print(" 1. Найдите @BotFather в Telegram")
print(" 2. Создайте нового бота командой /newbot")
print(" 3. Скопируйте токен")
print(" 4. Откройте файл .env")
print(" 5. Замените BOT_TOKEN=... на ваш токен")
print(" 6. Запустите: make run")
def main():
print_banner()
# Проверяем структуру
structure_ok = check_structure()
# Проверяем базу данных
db_ok = check_database()
# Проверяем конфигурацию
config_ok = check_config()
# Показываем возможности
show_features()
# Показываем команды
show_commands()
print("\n" + "=" * 60)
if structure_ok and db_ok:
print("🎉 ПРОЕКТ ГОТОВ К ИСПОЛЬЗОВАНИЮ!")
if config_ok:
print("✅ Бот настроен и готов к запуску в Telegram!")
print("🚀 Команда: make run")
else:
print("⚠️ Нужно настроить токен для Telegram бота")
show_instructions()
print("\n🔧 Утилиты для тестирования:")
print(" make demo - Работает без токена")
print(" make test - Интерактивный режим")
else:
print("❌ ПРОЕКТ НЕ ГОТОВ!")
if not structure_ok:
print(" - Отсутствуют необходимые файлы")
if not db_ok:
print(" - Проблемы с базой данных")
print("=" * 60)
if __name__ == "__main__":
main()