Files
tg_bot_language/bot/handlers/start.py
mamonov.ep 1a02c979d0 Реализован 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>
2025-12-04 11:09:54 +03:00

67 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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"
"Ты также можешь просто отправить мне слово, и я предложу добавить его в словарь!"
)