# Pulse — Telegram Bot Бот как полноценный интерфейс к Pulse. Управление задачами и привычками без захода на сайт. ## Авторизация ### Связка аккаунта 1. Пользователь отправляет `/start` 2. Бот отвечает: "Привет! Твой chat_id: `123456789`. Добавь его в настройках профиля на сайте." 3. После привязки бот может отправлять уведомления и принимать команды ### Альтернатива: Magic Link - `/login` → бот отправляет одноразовую ссылку для входа - Или код подтверждения, который вводишь на сайте ## Команды ### Задачи | Команда | Описание | |---------|----------| | `/tasks` | Список задач на сегодня (все) | | `/tasks remaining` | Только невыполненные задачи | | `/tasks all` | Все активные задачи | | `/task <текст>` | Создать новую задачу | | `/done ` | Отметить задачу выполненной | | `/undone ` | Снять отметку выполнения | **Примеры:** ``` /task Купить молоко /task Позвонить врачу !высокий @завтра /done 15 ``` **Флаги при создании:** - `!высокий` / `!средний` / `!низкий` — приоритет - `@сегодня` / `@завтра` / `@10.02` — дедлайн - `🔔17:00` — напоминание ### Привычки | Команда | Описание | |---------|----------| | `/habits` | Привычки на сегодня | | `/habits all` | Все привычки | | `/check ` | Отметить привычку выполненной | | `/uncheck ` | Снять отметку | **Примеры:** ``` /habits /check 3 ``` ### Статистика | Команда | Описание | |---------|----------| | `/stats` | Краткая статистика (выполнено сегодня, streak) | | `/stats week` | Статистика за неделю | ### Настройки | Команда | Описание | |---------|----------| | `/settings` | Текущие настройки уведомлений | | `/notify on` / `/notify off` | Вкл/выкл уведомления | | `/morning 09:00` | Установить время утреннего уведомления | ## Inline кнопки Для удобства бот отправляет сообщения с кнопками: ### Список задач ``` 📋 Задачи на сегодня: 1. [ ] Купить молоко 2. [ ] Позвонить врачу (!) 3. [✓] Оплатить счета [✅ Отметить] [➕ Новая задача] ``` При нажатии "Отметить" → показать список для выбора. ### Уведомление о привычке ``` 🔔 Напоминание: Гитара 🎸 Время заниматься! (17:00) [✅ Выполнено] [⏰ Напомни через 30 мин] ``` ## Быстрые ответы Бот понимает текст без команд в контексте: - После `/tasks` можно просто написать "купить хлеб" → создаст задачу - После показа списка можно написать "1" → отметит задачу #1 ## Архитектура ### Хранение состояния - Redis или in-memory map для user states - Состояния: `idle`, `awaiting_task_text`, `awaiting_habit_check` ### Обработка команд ```go type BotHandler struct { taskService *service.TaskService habitService *service.HabitService userService *service.UserService } func (h *BotHandler) HandleUpdate(update tgbotapi.Update) { // роутинг команд } ``` ### Связь с основным API - Бот использует те же сервисы что и HTTP API - Авторизация по telegram_chat_id → user_id ## Безопасность - Команды работают только для привязанных аккаунтов - Rate limiting на создание задач - Логирование действий через бота ## TODO - [ ] Базовые команды: /start, /tasks, /habits - [ ] Создание задач через /task - [ ] Отметка выполнения: /done, /check - [ ] Inline кнопки для быстрых действий - [ ] Контекстные быстрые ответы - [ ] Настройки через бота ## Приоритет реализации 1. **MVP:** /start, /tasks, /habits, /done, /check 2. **v1.1:** Создание задач, inline кнопки 3. **v1.2:** Быстрые ответы, статистика, настройки --- *Создано: 2026-02-06*