Реализован MVP телеграм бота для изучения языков
Основные компоненты: - База данных (PostgreSQL) с моделями User, Vocabulary, Task - Интеграция с OpenAI API для перевода слов - Команды: /start, /add, /vocabulary, /help - Сервисы для работы с пользователями, словарем и AI Реализовано: ✅ Регистрация и приветствие пользователя ✅ Добавление слов в словарь с автоматическим переводом ✅ Просмотр личного словаря ✅ Архитектура проекта с разделением на слои 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
66
bot/handlers/start.py
Normal file
66
bot/handlers/start.py
Normal file
@@ -0,0 +1,66 @@
|
||||
from aiogram import Router, F
|
||||
from aiogram.filters import CommandStart, Command
|
||||
from aiogram.types import Message
|
||||
from aiogram.fsm.context import FSMContext
|
||||
|
||||
from database.db import async_session_maker
|
||||
from services.user_service import UserService
|
||||
|
||||
router = Router()
|
||||
|
||||
|
||||
@router.message(CommandStart())
|
||||
async def cmd_start(message: Message, state: FSMContext):
|
||||
"""Обработчик команды /start"""
|
||||
async with async_session_maker() as session:
|
||||
user = await UserService.get_or_create_user(
|
||||
session,
|
||||
telegram_id=message.from_user.id,
|
||||
username=message.from_user.username
|
||||
)
|
||||
|
||||
if user.created_at.timestamp() > (message.date.timestamp() - 60):
|
||||
# Новый пользователь (создан менее минуты назад)
|
||||
await message.answer(
|
||||
f"👋 Привет, {message.from_user.first_name}!\n\n"
|
||||
f"Я бот для изучения английского языка. Помогу тебе:\n"
|
||||
f"📚 Пополнять словарный запас\n"
|
||||
f"✍️ Выполнять ежедневные задания\n"
|
||||
f"💬 Практиковать язык в диалоге\n\n"
|
||||
f"<b>Основные команды:</b>\n"
|
||||
f"/add [слово] - добавить слово в словарь\n"
|
||||
f"/vocabulary - мой словарь\n"
|
||||
f"/task - получить задание\n"
|
||||
f"/stats - статистика\n"
|
||||
f"/help - справка\n\n"
|
||||
f"Давай начнём! Отправь мне слово, которое хочешь выучить, или используй команду /add"
|
||||
)
|
||||
else:
|
||||
# Существующий пользователь
|
||||
await message.answer(
|
||||
f"С возвращением, {message.from_user.first_name}! 👋\n\n"
|
||||
f"Готов продолжить обучение?\n"
|
||||
f"/vocabulary - посмотреть словарь\n"
|
||||
f"/task - получить задание\n"
|
||||
f"/stats - статистика"
|
||||
)
|
||||
|
||||
|
||||
@router.message(Command("help"))
|
||||
async def cmd_help(message: Message):
|
||||
"""Обработчик команды /help"""
|
||||
await message.answer(
|
||||
"<b>📖 Справка по командам:</b>\n\n"
|
||||
"<b>Управление словарём:</b>\n"
|
||||
"/add [слово] - добавить слово в словарь\n"
|
||||
"/vocabulary - просмотр словаря\n"
|
||||
"/import - импортировать слова из текста\n\n"
|
||||
"<b>Обучение:</b>\n"
|
||||
"/task - получить задание\n"
|
||||
"/practice - практика с ИИ\n\n"
|
||||
"<b>Статистика:</b>\n"
|
||||
"/stats - твой прогресс\n\n"
|
||||
"<b>Настройки:</b>\n"
|
||||
"/settings - настройки бота\n\n"
|
||||
"Ты также можешь просто отправить мне слово, и я предложу добавить его в словарь!"
|
||||
)
|
||||
Reference in New Issue
Block a user