- Add separate translation_language setting (independent from interface language)
- Implement 3-step onboarding for new users:
1. Choose interface language
2. Choose learning language
3. Choose translation language
- Fix localization issues when using callback.message (user_id from state)
- Add UserService.get_user_by_id() method
- Add get_user_translation_lang() helper in i18n
- Update all handlers to use correct translation language
- Add localization keys for onboarding (ru/en/ja)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add separate level systems: CEFR (A1-C2) for European languages, JLPT (N5-N1) for Japanese
- Store levels per language in new `levels_by_language` JSON field
- Add custom scenario option in AI practice mode
- Show action buttons after practice ends (new dialogue, tasks, words)
- Fix level display across all handlers to use correct level system
- Add Alembic migration for levels_by_language field
- Update all locale files (ru, en, ja) with new keys
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Создано:
- bot/handlers/settings.py - обработчик команды /settings
Реализовано:
✅ /settings - настройки пользователя
- Выбор уровня английского (A1-C2)
- Выбор языка интерфейса (RU/EN)
- Интерактивные inline-кнопки
✅ Новый тип заданий - заполнение пропусков
- AI генерирует предложение с пропуском
- Показывает перевод для контекста
- Проверка ответа через AI
✅ Смешанные задания
- Случайное чередование типов (переводы + fill-in)
- Более разнообразная практика
Изменено:
- services/ai_service.py - метод generate_fill_in_sentence()
- services/task_service.py - метод generate_mixed_tasks()
- services/user_service.py - методы обновления настроек
- bot/handlers/tasks.py - использование смешанных заданий
- main.py - регистрация роутера настроек
Теперь бот предлагает:
- Перевод EN→RU
- Перевод RU→EN
- Заполнение пропусков в предложениях
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>