ThingsDoneReminder

Telegram-бот для персонального управления задачами.
GTD-методология, матрица Эйзенхауэра и периодические напоминания — в одном чате.

Python 3.12 aiogram 3 SQLite Docker Telegram Topics

Настрою бота под ваши процессы или разработаю с нуля — расскажите задачу

Написать в Telegram
↓ Возможности

GTD в одно касание

Главная идея — не планировать, а сортировать

Дэвид Аллен придумал GTD не для того, чтобы вы часами расставляли приоритеты. Идея проста: голова — не склад. Всё, что появилось — выгрузи из головы и разложи по папкам. Не «когда-нибудь разберу», а прямо сейчас, одним нажатием.

Классические приложения заставляют заполнять формы: дата, проект, приоритет, метка... Пока заполнил — забыл зачем открывал.

Здесь иначе. Написал мысль в чат — одна кнопка — задача в нужной папке. Коллега написал в рабочий чат — переслал боту — автор и ссылка сохранены.
💬
Мысль в чат
+
1 👉
Одно нажатие
=
📂
Задача на месте
🔴
Current
Делаю прямо сейчас.
Максимум 3 задачи.
Curr
🔵
Soon
На этой неделе.
Ближайший план.
Soon
🟡
Later
Когда-нибудь сделаю.
Не горит.
Later
📗
Note
Не задача, а справка.
Сохранить и забыть.
Note
Done
Уже сделано.
Зафиксировать результат.
Done
Каждая папка — это Telegram-топик. Нажали кнопку — сообщение переехало в нужный топик. Вы сортируете поток мыслей так же легко, как раскладываете письма по стопкам — только быстрее.

Как это работает

Написали — нажали — готово

ThingsDoneReminder
Позвонить Максиму по проекту
Позвонить Максиму по проекту #AlphaProject #Work
up Curr Later Note Menu Done #
👉 нажал "Curr"
✅ → Current
Позвонить Максиму по проекту #AlphaProject #Work #1DO 🔴

Возможности

Что умеет бот помимо сортировки

📤

Пересылка от коллег

Нажмите «Переслать» боту — автор сохранится, ссылка на источник добавится автоматически. Очистка URL от 50+ трекинг-параметров, нормализация телефонов.

🎯

Матрица Эйзенхауэра

Задача в Current — появляется клавиатура: DO, PLAN, DELEGATE, DROP + 5 категорий (#need, #want, #grow, #spend, #pay). Один клик — приоритет назначен.

🏷️

Теги и автотегинг

Авто-разметка по ключевым словам и именам (150+ алиасов через /alias). Теги связывают задачи в Obsidian-графе и формируют статистику через /mirror.

🕑

Напоминания и отложенные

Периодические (день/неделя/месяц/квартал/год) и отложенные сообщения — всё в SQLite, переживает рестарт. Ежедневные после 17:00, еженедельные по субботам.

⏱️

Таймер текущей задачи

Start — таймер тикает каждую минуту прямо в тексте сообщения («Задача 5m описание»). Pause — остановка. Время зафиксировано в истории.

🔗

Склейка сообщений

Кнопки ↑Glue / Glue↓ объединяют текст соседних сообщений. Удобно для сбора контекста из нескольких заметок в одну.

📝

Obsidian-хранилище

Done — запись попадает в дневной лог, лог проекта, карточку клиента и лог по тегу. Markdown со связями — готовая база знаний по Zettelkasten.

🗃️

Зеркало и восстановление

Каждое сообщение — в SQLite. Перемещение кнопками обновляет запись, не дублирует. «Восстановить» из Done/Корзины работает даже после рестарта.

📊

Дашборд и health check

Pinned-дашборд (каждые 3 мин), /mirror (статистика из зеркала), еженедельный health check владельцу с размером БД и количеством записей.

📂

35+ топиков и группы

Идеи, привычки, чтение, фильмы, проекты и др. /groups — привязка Telegram-групп к кнопкам. Private chat mode — работа без групп.

📸

OCR и изображения

Фото и документы-изображения получают inline-клавиатуру + кнопку OCR для распознавания текста (EasyOCR, en/ru).

Надёжная очередь

Burst mode: первые 5 сообщений мгновенно, далее 1 сек интервал. Корректная обработка rate-limit от Telegram во всех точках отправки.

Приоритеты и категории

Матрица Эйзенхауэра + пользовательские теги — в одной клавиатуре

🔴 1 — DO

Срочно и важно
Сделать сейчас

🔵 2 — PLAN

Важно, не срочно
Запланировать

🟡 3 — DELEGATE

Срочно, не важно
Делегировать

⚫ 4 — DROP

Не важно, не срочно
Убрать

Теги добавляют второе измерение — зачем вы это делаете:

#need — необходимость #want — желание #grow — развитие #spend — трата #pay — оплата
need
✅ want
grow
spend
pay
✓ 1🔴DO
2🔵PLAN
3🟡DELG
4⚫DROP

Результат: задача с приоритетом #1DO и категорией #want.
Статистика по тегам доступна через /alias и /mirror.

Умный автотегинг

Бот размечает задачи автоматически — по ключевым словам, именам и пересылкам

"купить продукты домой" #home
"встреча с командой AlphaProject" #AlphaProject #Work
Пересылка от @team_lead #TeamLead #Work

Управление алиасами через /alias — добавляйте свои слово → #тег.

Таймер и напоминания

Отслеживайте время на задачах и получайте периодические напоминания

Подготовить 0m отчёт
▶️ Время — вторым словом в тексте сообщения
up
Start
Menu
Done
#
up
pause
Menu
Done
#
🏃 Утренняя зарядка 📅 Каждый день
💰 Обзор бюджета 📅 Каждую неделю
📚 Книга из списка 📅 Каждый месяц
🎯 Ревизия целей 📅 Каждый квартал
🎊 План на 5 лет 📅 Каждый год

Статус-дашборд

Pinned-сообщение обновляется каждые 3 минуты

12
Inbox
3
Current
+5
Новые сегодня
245
Mirror total

/mirror — детальная статистика по расположениям и тегам из зеркала сообщений.
Еженедельный health check отправляет владельцу размер БД и количество записей.

Obsidian-хранилище знаний

Нажали Done — запись попала сразу в несколько Markdown-файлов

📅
Дневной лог

Каждая завершённая задача — в daily note. Вечером открываете Obsidian — видите всё, что сделано.

💼
Лог по клиенту

Вся история взаимодействий в одном файле. «Что там по Иванову?» — ответ за секунду.

📌
Лог по проекту

Прогресс проекта накапливается автоматически. Ретроспектива собирается сама.

🏷️
Лог по тегу

#health, #finance, #learning — каждый тег ведёт свой лог. Вот зачем нужны теги: они связывают задачи в срезы по направлениям жизни.

📅 2025-03-03 📅 2025-03-02 📌 AlphaProject 💼 Иванов 💼 Петров 🏷️ #health 🏷️ #finance 📌 BetaProject 📅 2025-03-01 🏷️ #learning
Граф связей в Obsidian — задача связывает daily note, проект, клиента и теги
Техническая информация

Быстрый старт — 3 шага

1. Настройте .env

BOT_TOKEN, OWNER_USER_ID, NOTES_FOLDER

2. Топики

Группы с форумами или private chat mode

3. Запуск

docker compose up -d

🐍
Python
3.12+
aiogram
3.4.1
🗃️
SQLite
stdlib
📦
Docker
compose
📄
Markdown
notes & logs

SQLite таблицы (secrets/deferred.db)

ТаблицаНазначение
deferred_messagesОтложенные (one-shot) и периодические напоминания
trash_cleanupОчередь отложенного удаления сообщений
user_statsСчётчики inbox/current/new per-user
message_mirrorЗеркало всех сообщений с текущим расположением
undo_registryДанные для кнопки «Восстановить» (persistent)

Архитектура

Handlers

  • commands.py
  • messages.py
  • callbacks.py

Services

  • messaging.py — retry + rate-limit
  • mirror.py — зеркало SQLite
  • deferred.py — deferred, periodic, stats, undo
  • periodic.py — напоминания, health check
  • queue.py — burst mode
  • notes.py — Markdown-логи
  • ocr.py — EasyOCR
  • user_config.py — per-user, middleware

Core

  • config.py — TopicsProxy
  • state.py — таймер, pending
  • keyboards.py
  • utils.py — URL, теги, телефоны

Data

  • SQLite (deferred.db) — 5 таблиц
  • Markdown заметки (Obsidian)
  • JSON конфигурация per-user

Ближайшие планы

Над чем работаем

🎤

Голосовые сообщения в задачи

Надиктовали мысль — бот транскрибирует и создаст задачу. Переслали чужое голосовое — расшифрует, сохранит автора и отправит в inbox.

🌐

Публичный бот для тестирования

Попробуйте базовый набор функций без установки. Понравится — развернём полную версию под вас.

Хотите такого же бота?

Разработка, настройка и интеграция под ваши задачи

🚀

Развернуть бота для вас

Полная настройка под ваши чаты, топики и процессы. Запуск на вашем сервере — готово за 1 день.

🔧

Доработка под задачи

Новые теги, интеграция с календарём, CRM или Notion. Любая кастомизация логики.

🤝

Бот для команды

Многопользовательский режим, распределение задач, общие дашборды и отчёты.

Обсудим задачу и предложу решение — без обязательств.

💬 Написать в Telegram