Files
obsidian/Projects/Pulse/Telegram-Bot.md

5.0 KiB
Raw Blame History

Pulse — Telegram Bot

Бот как полноценный интерфейс к Pulse. Управление задачами и привычками без захода на сайт.

Авторизация

Связка аккаунта

  1. Пользователь отправляет /start
  2. Бот отвечает: "Привет! Твой chat_id: 123456789. Добавь его в настройках профиля на сайте."
  3. После привязки бот может отправлять уведомления и принимать команды
  • /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 кнопки для быстрых действий
  • Контекстные быстрые ответы
  • Настройки через бота

Приоритет реализации

  1. MVP: /start, /tasks, /habits, /done, /check
  2. v1.1: Создание задач, inline кнопки
  3. v1.2: Быстрые ответы, статистика, настройки

Создано: 2026-02-06