feat: мини-игры, premium подписка, улучшенные контексты

Мини-игры (/games):
- Speed Round: 10 раундов, 10 секунд на ответ, очки за скорость
- Match Pairs: 5 слов + 5 переводов, соединить пары

Premium-функции:
- Поля is_premium и premium_until для пользователей
- AI режим проверки ответов (учитывает синонимы)
- Batch проверка всех ответов одним запросом

Улучшения:
- Примеры использования для всех добавляемых слов
- Разбиение переводов по запятой на отдельные записи
- Полные предложения в контекстах (без ___)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-10 19:42:10 +03:00
parent b74ea2170c
commit adc8a6bf8e
18 changed files with 1819 additions and 34 deletions

View File

@@ -6,6 +6,7 @@
"task": "🧠 Задание",
"practice": "💬 Практика",
"exercises": "📖 Упражнения",
"games": "🎮 Мини-игры",
"words": "🎯 Тематические слова",
"import": "📖 Импорт",
"stats": "📊 Статистика",
@@ -428,5 +429,63 @@
"score": "Результат: {correct} из {total}",
"no_topics": "Для твоего уровня пока нет доступных тем.",
"write_answer": "Напиши свой ответ:"
},
"minigames": {
"menu_title": "🎮 <b>Мини-игры</b>\n\nВыбери игру:",
"start_btn": "Начать",
"back_btn": "Назад",
"play_again": "Играть ещё",
"speed_round": {
"name": "Быстрый перевод",
"rules": "📋 <b>Правила:</b>\n\n• Появляется слово из твоего словаря\n• У тебя {time} секунд на ответ\n• Напиши перевод как можно быстрее\n• Чем быстрее — тем больше очков!\n\n🎯 Раундов: {count}",
"mode_ai": "С проверкой AI",
"mode_simple": "Простой режим",
"premium_hint": "У тебя есть подписка! Выбери режим проверки ответов.",
"ai_mode_warning": "⚠️ <b>Режим AI проверки</b>\n\nВ этом режиме AI проверит все ответы <b>после окончания игры</b>.\nВо время игры ответы проверяются по словарю.\n\nAI учитывает синонимы и вариации перевода.",
"ai_checking": "AI проверяет ответы",
"not_enough_words": "❌ Недостаточно слов в словаре\n\nМинимум: {min} слов\nУ тебя: {current}\n\nДобавь слова через /add или /words",
"round": "Раунд {current}/{total}",
"seconds": "сек",
"score": "Очки",
"points": "очков",
"time_up": "Время вышло!",
"correct": "Правильно!",
"wrong": "Неправильно!",
"correct_was": "Правильный ответ",
"finished": "Игра окончена!",
"final_score": "Итоговый счёт",
"correct_answers": "Правильных ответов",
"accuracy": "Точность",
"answers_list": "Ответы",
"result": {
"excellent": "🔥 Превосходно! Ты настоящий мастер!",
"good": "👏 Отличный результат! Так держать!",
"average": "📚 Неплохо! Продолжай практиковаться.",
"practice": "💪 Не сдавайся! Повторение — мать учения."
}
},
"match_game": {
"name": "Найди пару",
"rules": "📋 <b>Правила:</b>\n\n• Появятся {count} слов и {count} переводов вперемешку\n• Нужно правильно соединить пары\n• Введи ответ в формате: 1A, 2B, 3C...\n• Засекается время прохождения",
"title": "Соедини пары",
"words_col": "Слова",
"translations_col": "Переводы",
"hint": "Введи пары (например: 1C, 2A, 3B, 4D, 5E)",
"cancel": "Отмена",
"cancelled": "❌ Игра отменена",
"not_enough_words": "❌ Недостаточно слов в словаре\n\nМинимум: {min} слов\nУ тебя: {current}\n\nДобавь слова через /add или /words",
"not_all_pairs": "⚠️ Введи все пары!\n\nВведено: {entered}\nНужно: {needed}",
"finished": "Игра окончена!",
"score": "Очки",
"correct_pairs": "Правильных пар",
"time": "Время",
"results": "Результаты",
"result": {
"perfect": "🎯 Идеально! Все пары верны!",
"excellent": "🔥 Превосходно! Почти без ошибок!",
"good": "👍 Хороший результат!",
"practice": "💪 Продолжай практиковаться!"
}
}
}
}