Files
tg_bot_language/main.py
mamonov.ep 72a63eeda5 Добавлены основные функции 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>
2025-12-04 15:46:02 +03:00

58 lines
1.8 KiB
Python

import asyncio
import logging
from aiogram import Bot, Dispatcher
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, words, import_text, practice, reminder, level_test
from database.db import init_db
from services.reminder_service import init_reminder_service
async def main():
"""Главная функция запуска бота"""
# Настройка логирования
logging.basicConfig(
level=logging.INFO if settings.debug else logging.WARNING,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
# Инициализация бота и диспетчера
bot = Bot(
token=settings.bot_token,
default=DefaultBotProperties(parse_mode=ParseMode.HTML)
)
dp = Dispatcher()
# Регистрация роутеров
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("Бот запущен")
try:
await dp.start_polling(bot)
finally:
# Остановка планировщика при завершении
reminder_service.shutdown()
if __name__ == '__main__':
asyncio.run(main())