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:
@@ -118,7 +118,7 @@ async def wod_add_callback(callback: CallbackQuery):
|
||||
# Добавляем в словарь
|
||||
translation_lang = get_user_translation_lang(user)
|
||||
|
||||
await VocabularyService.add_word(
|
||||
new_word = await VocabularyService.add_word(
|
||||
session=session,
|
||||
user_id=user.id,
|
||||
word_original=wod.word,
|
||||
@@ -130,6 +130,23 @@ async def wod_add_callback(callback: CallbackQuery):
|
||||
source=WordSource.SUGGESTED
|
||||
)
|
||||
|
||||
# Добавляем переводы в word_translations (разбиваем по запятой)
|
||||
# Берём первый пример из examples если есть
|
||||
example = None
|
||||
example_translation = None
|
||||
if wod.examples and len(wod.examples) > 0:
|
||||
example = wod.examples[0].get('sentence')
|
||||
example_translation = wod.examples[0].get('translation')
|
||||
|
||||
await VocabularyService.add_translation_split(
|
||||
session=session,
|
||||
vocabulary_id=new_word.id,
|
||||
translation=wod.translation,
|
||||
context=example,
|
||||
context_translation=example_translation,
|
||||
is_primary=True
|
||||
)
|
||||
|
||||
await session.commit()
|
||||
|
||||
# Обновляем сообщение
|
||||
|
||||
Reference in New Issue
Block a user