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:
@@ -63,13 +63,14 @@ def main_menu_keyboard(lang: str = 'ru') -> ReplyKeyboardMarkup:
|
||||
],
|
||||
[
|
||||
KeyboardButton(text=t(lang, "menu.exercises")),
|
||||
KeyboardButton(text=t(lang, "menu.games")),
|
||||
],
|
||||
[
|
||||
KeyboardButton(text=t(lang, "menu.vocab")),
|
||||
],
|
||||
[
|
||||
KeyboardButton(text=t(lang, "menu.add")),
|
||||
KeyboardButton(text=t(lang, "menu.stats")),
|
||||
],
|
||||
[
|
||||
KeyboardButton(text=t(lang, "menu.stats")),
|
||||
KeyboardButton(text=t(lang, "menu.settings")),
|
||||
],
|
||||
],
|
||||
@@ -468,6 +469,13 @@ async def btn_exercises_pressed(message: Message, state: FSMContext):
|
||||
await show_exercises_menu(message, state, telegram_id=message.from_user.id)
|
||||
|
||||
|
||||
@router.message(_menu_match('menu.games'))
|
||||
async def btn_games_pressed(message: Message, state: FSMContext):
|
||||
"""Показать меню мини-игр."""
|
||||
from bot.handlers.minigames import cmd_games
|
||||
await cmd_games(message, state)
|
||||
|
||||
|
||||
@router.message(_menu_match('menu.words'))
|
||||
async def btn_words_pressed(message: Message, state: FSMContext):
|
||||
"""Подсказать про тематические слова и показать быстрые темы."""
|
||||
|
||||
Reference in New Issue
Block a user