Добавлены основные функции MVP: тематические подборки, импорт слов, диалоговая практика, напоминания и тест уровня

Новые команды:
- /words [тема] - AI-генерация тематических подборок слов (10 слов по теме с учётом уровня)
- /import - извлечение до 15 ключевых слов из текста (книги, статьи, песни)
- /practice - диалоговая практика с AI в 6 сценариях (ресторан, магазин, путешествие, работа, врач, общение)
- /reminder - настройка ежедневных напоминаний по расписанию
- /level_test - тест из 7 вопросов для определения уровня английского (A1-C2)

Основные изменения:
- AI сервис: добавлены методы generate_thematic_words, extract_words_from_text, start_conversation, continue_conversation, generate_level_test
- Диалоговая практика: исправление ошибок в реальном времени, подсказки, перевод реплик
- Напоминания: APScheduler для ежедневной отправки напоминаний в выбранное время
- Тест уровня: автоматическое определение уровня при регистрации, можно пропустить
- База данных: добавлены поля reminders_enabled, last_reminder_sent
- Vocabulary service: метод get_word_by_original для проверки дубликатов
- Зависимости: apscheduler==3.10.4

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-04 15:46:02 +03:00
parent 2c51fa19b6
commit 72a63eeda5
13 changed files with 1781 additions and 23 deletions

18
main.py
View File

@@ -6,8 +6,9 @@ from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode
from config.settings import settings
from bot.handlers import start, vocabulary, tasks, settings as settings_handler
from bot.handlers import start, vocabulary, tasks, settings as settings_handler, words, import_text, practice, reminder, level_test
from database.db import init_db
from services.reminder_service import init_reminder_service
async def main():
@@ -27,16 +28,29 @@ async def main():
# Регистрация роутеров
dp.include_router(start.router)
dp.include_router(level_test.router)
dp.include_router(vocabulary.router)
dp.include_router(tasks.router)
dp.include_router(settings_handler.router)
dp.include_router(words.router)
dp.include_router(import_text.router)
dp.include_router(practice.router)
dp.include_router(reminder.router)
# Инициализация базы данных
await init_db()
# Инициализация и запуск сервиса напоминаний
reminder_service = init_reminder_service(bot)
reminder_service.start()
# Запуск бота
logging.info("Бот запущен")
await dp.start_polling(bot)
try:
await dp.start_polling(bot)
finally:
# Остановка планировщика при завершении
reminder_service.shutdown()
if __name__ == '__main__':