Реализованы настройки пользователя и новые типы заданий

Создано:
- 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>
This commit is contained in:
2025-12-04 14:46:30 +03:00
parent dab1953888
commit 44f4f61fce
6 changed files with 347 additions and 4 deletions

View File

@@ -57,3 +57,41 @@ class UserService:
select(User).where(User.telegram_id == telegram_id)
)
return result.scalar_one_or_none()
@staticmethod
async def update_user_level(session: AsyncSession, user_id: int, level: LanguageLevel):
"""
Обновить уровень английского пользователя
Args:
session: Сессия базы данных
user_id: ID пользователя
level: Новый уровень
"""
result = await session.execute(
select(User).where(User.id == user_id)
)
user = result.scalar_one_or_none()
if user:
user.level = level
await session.commit()
@staticmethod
async def update_user_language(session: AsyncSession, user_id: int, language: str):
"""
Обновить язык интерфейса пользователя
Args:
session: Сессия базы данных
user_id: ID пользователя
language: Новый язык (ru/en)
"""
result = await session.execute(
select(User).where(User.id == user_id)
)
user = result.scalar_one_or_none()
if user:
user.language_interface = language
await session.commit()