5.0 KiB
5.0 KiB
Pulse — Telegram Bot
Бот как полноценный интерфейс к Pulse. Управление задачами и привычками без захода на сайт.
Авторизация
Связка аккаунта
- Пользователь отправляет
/start - Бот отвечает: "Привет! Твой chat_id:
123456789. Добавь его в настройках профиля на сайте." - После привязки бот может отправлять уведомления и принимать команды
Альтернатива: Magic Link
/login→ бот отправляет одноразовую ссылку для входа- Или код подтверждения, который вводишь на сайте
Команды
Задачи
| Команда | Описание |
|---|---|
/tasks |
Список задач на сегодня (все) |
/tasks remaining |
Только невыполненные задачи |
/tasks all |
Все активные задачи |
/task <текст> |
Создать новую задачу |
/done <id> |
Отметить задачу выполненной |
/undone <id> |
Снять отметку выполнения |
Примеры:
/task Купить молоко
/task Позвонить врачу !высокий @завтра
/done 15
Флаги при создании:
!высокий/!средний/!низкий— приоритет@сегодня/@завтра/@10.02— дедлайн🔔17:00— напоминание
Привычки
| Команда | Описание |
|---|---|
/habits |
Привычки на сегодня |
/habits all |
Все привычки |
/check <id> |
Отметить привычку выполненной |
/uncheck <id> |
Снять отметку |
Примеры:
/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
Обработка команд
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 кнопки для быстрых действий
- Контекстные быстрые ответы
- Настройки через бота
Приоритет реализации
- MVP: /start, /tasks, /habits, /done, /check
- v1.1: Создание задач, inline кнопки
- v1.2: Быстрые ответы, статистика, настройки
Создано: 2026-02-06