Telegram

Бот сам записывает меня на встречи, читая переписку в Telegram

В переписке с партнёром написал: «Давай после обеда, часа в 3». Он согласился. Мы разошлись по своим делам. В 2:30 мне пришло уведомление: «Через 30 минут созвон с Русланом». Я ничего не нажимал. Никакого «добавить в Google Calendar», никакого ручного ввода. Просто написал в чате — и система сама поняла, что это встреча, и поставила напоминание.

Это не магия и не какое-то продвинутое приложение. Это результат того, что 23 марта 2026 года я потратил несколько часов на настройку автодетекта встреч из Telegram-переписки. Решение для проблемы, которая у меня была годами: я договариваюсь о встречах в чатах и потом их забываю.

Проблема: встречи живут в чатах, а не в календаре

Большинство договорённостей о созвонах и встречах у меня происходят в Telegram. «Давай завтра утром?» «В пятницу после 5?» «Сегодня в 16:00 ок?» Это быстрее, чем отправлять приглашение в Google Calendar, и естественнее, чем формальное планирование.

Проблема в том, что такие договорённости существуют только в переписке. Они нигде не структурированы, нет напоминания, нет уведомления за полчаса. Я договорился, переключился на другой чат или задачу — и про встречу забыл.

За несколько месяцев управления виллами я пропустил несколько созвонов именно по этой причине. Не потому что не хотел, а потому что «давай в 3» не превратилось автоматически в запись в календаре. Нужен был промежуточный шаг — «теперь записать в Calendar» — который я регулярно не делал.

Классическое решение: дисциплина. Договорился → тут же занёс в Calendar. Я пробовал. Не работает на длинной дистанции. Слишком много переключений контекста, слишком мало трения между «написал» и «закрыл чат».

Инсайт: ассистент видит всю переписку

У меня есть Telegram-ассистент, который отвечает клиентам когда я занят. Он работает через API и видит все входящие и исходящие сообщения в нужных чатах. В какой-то момент я поймал очевидную мысль: он видит переписку. Значит, он видит, когда я с кем-то договариваюсь о встрече. Почему бы ему не ловить эти договорённости и не создавать напоминания сам?

Раньше ассистент был реактивным: кто-то написал → он ответил. Теперь я добавил ему проактивный слой: анализируй исходящие сообщения (то, что пишу я) и входящие от конкретных чатов, ищи признаки встреч, создавай напоминания.

Это принципиальный сдвиг в архитектуре: не «бот реагирует на команды», а «бот наблюдает за контекстом и действует проактивно».

Как работает детектор встреч

Технически: каждое исходящее сообщение из моих чатов проходит через LLM-классификатор. Он смотрит на сообщение в контексте последних нескольких реплик диалога и отвечает на вопрос: «Есть ли в этом обмене договорённость о конкретной встрече или созвоне?»

Если да — извлекает из текста структурированные данные:

  • С кем встреча (имя или username собеседника)
  • Когда (дата и время, включая относительные — «завтра», «в пятницу», «после обеда»)
  • Формат (звонок, встреча, Zoom, в офисе)
  • Тема (если упомянута в переписке)

Относительные даты обрабатываются с учётом текущего времени и часового пояса. «Завтра в 10» — бот знает дату сегодня, вычисляет завтра, добавляет часовой пояс Бали. «В пятницу» — находит ближайшую пятницу в будущем. «После обеда» — ставит дефолт на 14:00 и создаёт напоминание с пометкой «уточни точное время».

После извлечения данных бот создаёт напоминание: за 30 минут до встречи приходит сообщение в мой личный чат с деталями. Это не запись в Google Calendar — это Telegram-уведомление, которое точно увижу.

Обработка переносов

В реальной жизни встречи переносятся. «Слушай, в 3 не смогу — давай лучше в 4?» Обычная ситуация в переписке, но для бота это отдельный случай: нужно понять, что человек отменяет/переносит уже существующую договорённость, а не создаёт новую.

Решил через контекст: если в чате уже есть активное напоминание, и в той же переписке появляется новое время с маркерами переноса («давай лучше», «перенесём», «лучше в ...»), — бот обновляет существующее напоминание, а не создаёт второе.

Работает не идеально в пограничных случаях, но ловит 90% реальных переносов корректно. Для оставшихся 10% лучше получить два напоминания, чем ни одного.

Что было в первый день

Запустил 23 марта. За первый день бот поймал три договорённости, которые я бы точно потерял:

  1. Созвон с инвестором про результаты февраля — «давай после обеда, часа в 3». Я написал это и переключился в другой чат. Без напоминания — пропустил бы.
  2. Онлайн-встреча с подрядчиком по ремонту одной из вилл — «в среду в 11, ок?» Он подтвердил, я ответил «ок» и забыл. Бот поймал его «ок» как взаимное подтверждение и поставил напоминание.
  3. Звонок с партнёром по новому проекту — «на этой неделе в четверг». Размытое время, бот поставил напоминание на четверг с пометкой «уточни время».

Три встречи, которые существовали только в чатах и нигде больше. До настройки бота — как минимум одну из них я бы точно пропустил. После — все три прошли.

Что бот не ловит (и это правильно)

Не каждое упоминание времени — это встреча. «Договор действует до 31 марта», «вилла занята до пятницы», «пришли в понедельник, я буду свободнее» — это не договорённости о встречах.

Классификатор обучен на различие между «мы оба согласились встретиться» и «в тексте есть дата». Для этого он смотрит не на одно сообщение, а на последние 5-10 реплик диалога: есть ли в них двусторонняя договорённость, согласование времени, подтверждение со стороны обоих участников.

Ложные срабатывания случаются, но редко. За первые две недели работы — около 5 ложных напоминаний на 23 корректных. Это терпимо. Лишнее напоминание занимает 2 секунды на закрытие. Пропущенный созвон — значительно дороже.

Разница с традиционным календарём

Есть много инструментов для управления встречами. Google Calendar, Calendly, даже встроенные Telegram-боты для планирования. Почему не они?

Проблема не в инструменте, а в точке трения. Любой инструмент, который требует от меня явного действия — «нажать кнопку», «отправить команду», «скопировать в другое приложение» — проигрывает потому, что это действие нужно совершить в момент, когда я занят другим. Когда пишу в чат, я думаю о разговоре, а не о календаре.

Автодетект убирает это трение полностью. Я пишу так же, как писал раньше. Бот работает фоном. Напоминание появляется тогда, когда нужно, — без каких-либо действий с моей стороны.

Это и есть смысл хорошей автоматизации: не «дать человеку мощный инструмент», а «убрать потребность в инструменте». Наладчик не делает — он делает так, чтобы делалось само.

Контекстный ассистент vs реактивный

Этот проект был частью более широкого эксперимента: что получится, если дать ассистенту больше контекста о том, что я делаю?

Реактивный ассистент — это тот, который отвечает на явные команды. «Поставь напоминание на 3 часа» → ставит. Это полезно, но требует от меня помнить отдавать команды.

Контекстный ассистент — это тот, который видит, что происходит, и действует без явных команд. Я договорился о встрече — бот создал напоминание. Я написал что-то, похожее на задачу — бот добавил её в список. Я упомянул имя из базы контактов — бот проверил, не требует ли этот контакт follow-up.

Разница между ними — разница между инструментом и помощником. Инструмент делает то, что ему говорят. Помощник делает то, что нужно, замечая это сам.

Telegram — уникальная среда для такого ассистента, потому что вся коммуникация идёт через один канал. Звонки, переписки с клиентами, переговоры с подрядчиками, общение с инвесторами — всё в Telegram. Ассистент, который видит этот поток, видит почти всё, что происходит в деловой жизни.

Технические детали реализации

Бот подключён к личному аккаунту через Telegram API (MTProto, не Bot API). Это важно: Bot API видит только сообщения, которые написаны боту напрямую или в группах, где он добавлен. MTProto позволяет читать любую переписку на аккаунте, включая личные чаты.

Каждое сообщение обрабатывается асинхронно: получение → буфер → классификация → если встреча — создание напоминания. Буфер нужен потому, что один реплика не всегда однозначна — нужен контекст нескольких сообщений подряд.

Для классификации использую Claude с системным промптом, описывающим задачу. Промпт примерно такой: «Ты анализируешь фрагмент переписки. Твоя задача — определить, договорились ли собеседники о встрече или созвоне. Если да — извлеки: время, дату, участников, формат. Отвечай только JSON.»

JSON проверяется на валидность, дата переводится в UTC с учётом часового пояса пользователя, напоминание ставится в очередь на отправку. Простая, надёжная цепочка.

Что планирую добавить

Сейчас бот ловит встречи из переписки и ставит напоминания. Следующий шаг — двухсторонняя синхронизация с Google Calendar: когда напоминание создаётся, событие автоматически добавляется в Calendar. И наоборот: если я добавлю что-то в Calendar вручную — бот знает об этом и не создаёт дубль, если та же встреча упомянется в переписке.

Ещё хочу добавить автоматический follow-up: если встреча прошла и в течение дня не появился ни один результат (запись, договорённость, задача) — бот спрашивает «что решили?» и помогает зафиксировать итоги.

Конечная цель: ассистент, который ведёт мою деловую жизнь не потому что я ему командую, а потому что видит контекст и понимает, что происходит. Это другой класс автоматизации — не автоматизация задач, а автоматизация внимания.

Итог:
— Ассистент читает исходящие сообщения в Telegram через MTProto API
— Claude классифицирует: есть ли в переписке договорённость о встрече?
— Если да — извлекает время, участника, формат; создаёт напоминание за 30 минут
— Переносы обрабатываются: если встреча переносится в той же переписке — напоминание обновляется
— Первый день: 3 корректных напоминания о встречах, которые иначе были бы пропущены
— За две недели: ~23 корректных, ~5 ложных срабатываний

Читать также

Строю AI-систему управления бизнесом в прямом эфире

Подписывайся в Telegram — там выходят разборы, кейсы и инсайты прямо из процесса работы.

Подписаться в Telegram