изм. 26.08.2026 · 12:34
Morkovka AI
Вторая редакция · 26 августа 2026

Телеграм-бот: решение по архитектуре

Бот — второй интерфейс к существующей Морковке, а не новый продукт

Своего биллинга, своих пользователей, своих цен и своих кабинетов у него нет и не будет. Он дёргает готовые вызовы, показывает результат и уведомляет. Отсюда следует всё: и то, что список его действий равен списку услуг Морковки, и то, что он физически не может пообещать несуществующего.

Уведомления уже считаются и уходят в никуда

У Морковки есть таблица WatchEvent и семь типов событий: залетел ролик у отслеживаемого, резкий прирост, просадка, новый пост, сменил шапку, удалил пост, сводка недели. Всё это уже вычисляется и пишется в базу. Доставка — настройка из трёх значений: в интерфейс, в интерфейс с письмом, никуда.

Первые три события обесцениваются за часы. Про залетевший у конкурента ролик надо знать сегодня, а не в понедельник письмом. Сейчас они ложатся в колокольчик, куда человек заходит, когда сам вспомнит.

Правка минимальная: настройка получает четвёртое значение, а рядом с веткой «отправить письмо» появляется ветка «отправить в телеграм». Ни события, ни наблюдение, ни биллинг не трогаются.

Раздел наблюдения в их кабинете

Семь действий — это и есть весь бот

Список действий равен списку услуг Морковки. Поэтому бот не может пообещать несуществующего: обещать нечем.

ДействиеЧто вводятКредитовСколько ждать
Разбор аккаунтаник484–7 минут
Тридцать похожихник9около минуты
Разбор своего контентасвой ник и брифинг314–7 минут
Поставить на наблюдениеник25сразу
Отчёт по наблюдаемомувыбор из своих11около минуты
Разбор чужого роликассылка5около минуты
Сценарий по мотивамссылка3около минуты

Что где живёт

Это нужно переслать клиенту? → в чат

Здесь нужно листать, фильтровать и возвращаться назад? → в кабинет

Сайт, свой домен

Оффер, примеры, цены, оферта, касса, веб-кабинет

Здесь то, что читают до доверия. И здесь рубли, чек и счёт юрлицу — в Телеграме их быть не может.

Чат бота

Ввод, запуск любого действия, прогресс, отчёт, уведомления, чек об оплате

Отчёт из чата пересылается клиенту одним касанием, ищется поиском и остаётся в истории. Для SMM-специалиста это не удобство, а часть работы: он продаёт этот разбор как свою.

Mini App, не в первой версии

История отчётов с фильтрами, слоты наблюдения, баланс, брифинг для разбора своего контента, пакетные операции

Списки и переключатели: в чате они вырождаются в лестницу кнопок. Но пока показывать там нечего.

Форма поверх чата или сообщение в чат

Сообщение. Формы в запуске задач нет вовсе.

Ник приходит из буфера обмена и системного «Поделиться». Форма в «Поделиться» не появляется в принципе. Вставить в поле чата — одно действие. Через форму — пять: кнопка, полторы секунды загрузки, тап в поле, вставка, отправка. И ломается она ровно там, где чат работает: слабый Android, старый вебвью, десктоп.

Признак не «сколько полей», а откуда берётся значение. Значение, которое ВСТАВЛЯЮТ, — в чат. Значение, которое СОЧИНЯЮТ ГЛАЗАМИ (ниша, стоп-темы, список из тридцати строк, сетка порогов), — в форму.

По этому признаку форма нужна ровно в трёх местах, и все три редкие: брифинг для разбора своего контента, пакетный подбор, пакетная настройка наблюдения. В первой версии их нет.

Что нового в Telegram и что из этого берём

Перелом случился в 2026 году — пять релизов за семь месяцев. Версии сверены по журналу изменений вручную: в разведке одну назвали неверно.

Цвет кнопок

поле style у InlineKeyboardButtonберём

Bot API 9.4 · 9 февраля 2026

Было: Все кнопки одинаковые серые, иерархию рисовали эмодзи в подписи: «✅ Запустить», «❌ Отмена»

Стало: Главное действие видно, не читая текст

Сообщение как свёрстанный документ

sendRichMessageберём

Bot API 10.1 · 11 июня 2026

Было: Таблицы рисовали моноширинным текстом, отчёт резали на четыре сообщения или отдавали картинкой

Стало: Отчёт до 32 тысяч знаков одним пересылаемым объектом: заголовки, таблицы, сворачиваемые блоки

Текст печатается на глазах

sendMessageDraftво вторую очередь

Bot API 9.5 · март 2026

Было: Только «печатает…», который живёт пять секунд и ничего не сообщает о ходе дела

Стало: Тот ритм, к которому все привыкли по ИИ-чатам

Кнопки внутри текста и нативно погашенные

RichBlockButtons, поле disabledберём

Bot API 10.3 · 24 августа 2026

Было: Только полоса кнопок внизу; погашенную изображали заглушкой, которая выглядела рабочей

Стало: «Выгрузить» под таблицей, «Обновить» рядом с датой — отчёт сам становится интерфейсом

Темы прямо в личной переписке

createForumTopic в личных чатахво вторую очередь

Bot API 9.3 · декабрь 2025, бот создаёт сам — 9.4

Было: Одна плоская лента, где семь функций и десятки отчётов вперемешку

Стало: Один запуск — одна тема со своим названием. Ответ на «простыню» на уровне платформы

По чему видно, что бота делали всерьёз

Признаки дорогого

  • Ровно одно акцентное действие цветом на экран, остальное нейтральное
  • Отчёт — одно сообщение, а не четыре подряд
  • Дата сущностью, которую клиент рисует в часовом поясе читателя, а не строкой «26.08.2026 (МСК)»
  • На одно действие — одно сообщение; статус живёт в одном месте, а не приходит цепочкой «Принял / Ищу / Почти»
  • Ник копируется кнопкой, а не выделяется пальцем
  • Недоступный шаг — погашенная кнопка на своём месте, а не исчезнувшая клавиатура

Признаки обратного

  • Псевдотаблицы из чёрточек и «▬▬▬▬» вместо разделителей
  • ✅❌🔥 в подписях кнопок вместо цвета — верный признак, что бота делали до февраля
  • Семь действий столбиком по одной кнопке в ряд на первом экране
  • «Загрузка… ⏳», навсегда оставшаяся в истории
  • Кнопка «Назад», которая шлёт новое сообщение вместо перерисовки — и в ленте пять копий меню

Как бот понимает, чего от него хотят

Первый эшелон — без модели, мгновенно и бесплатно

Разбор строки по форме: ссылка на ролик, ссылка на профиль, ник с собакой, голый ник. Срезаются хвосты вроде ?igsh=, регистр вниз, получается канонический ключ. Сюда же приходят пересылки: из текста и вложений вытаскивается первая ссылка на Instagram.

Прислали просто ссылку без слов — самый частый вход

Модель не зовём вовсе. Бесплатно подтягиваем шапку профиля и отвечаем карточкой: кто это, сколько подписчиков, когда последний пост, и две-три кнопки с ценой прямо на кнопке.

Второй эшелон — модель, только если в сообщении есть слова

Один вызов дешёвой модели со строгой схемой на выходе. Семь услуг — это классификация, а не планирование: никаких агентных цепочек.

Похожие намерения не разводим переспросом

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

Ожидание, падение, выдача

Пока считается

  • Прогресс — правкой одного сообщения и без звука. Финал — новым сообщением со звуком: правка не создаёт уведомления, и половина людей его просто не увидит.
  • Стадии вместо процентов: «собираю посты, 62 из 180» → «считаю метрики» → «свожу выводы». Правка не чаще раза в пять секунд.
  • В статусе — номер задачи и честное время именно этой услуги. Единое «до десяти минут» на всё — враньё в обе стороны.
  • «Можно закрыть чат — пришлю сюда, когда будет готово» стоит в первом же статусе.

Если упало

  • Первая строка всегда снимает главный страх: «Кредиты не списаны — 48 на месте».
  • Вторая — причина по-человечески. Третья — ровно одно действие и код обращения.
  • Ошибка на нашей стороне даёт кнопку «Повторить бесплатно», ошибка во вводе — «Другой аккаунт».

Как отдаём

  • Отчёт — одно самодостаточное сообщение с шапкой «@ник · разбор аккаунта · период · Морковка». Всё, что должно пережить пересылку, лежит внутри него.
  • Внутри отчёта нет обращения на «ты», остатка кредитов, цен и внутренних названий услуг: его читает клиент SMM-специалиста, который к боту отношения не имеет.
  • Служебные кнопки — следующим сообщением, чтобы не уехали вместе с отчётом.
  • Две разные кнопки «поделиться»: «Переслать» оставляет шапку «Переслано из…», а «Отправить клиенту» отправляет от имени человека, без следов инструмента. Фрилансеру, который продаёт этот разбор как свою работу, важнее вторая.
  • Повторная выдача уже готового отчёта — всегда бесплатно и без пересчёта.

Пять мест, где это сломается

Разбор присланной строки

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

Что делаем: Тестовый набор из полусотни реальных форм. При неудаче не молчать: «Прочитал так: @nike. Не то?»

Двойное списание

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

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

Ограничение частоты бьёт по всем

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

Что делаем: Единая очередь исходящих с общим ограничителем. Воркеры не пишут в Telegram напрямую.

Наблюдение убивает доставку всего остального

Восемь аккаунтов по три-четыре события в неделю — и бот в муте, а потом в блоке. После этого не долетают и отчёты за 48 кредитов.

Что делаем: Сводка по расписанию вместо сообщения на каждое изменение, частота настраивается при постановке, отписка кнопкой под самим уведомлением.

Свежие возможности на несвежих клиентах

Цвет кнопок работает с февраля, свёрстанные сообщения с июня, кнопки внутри текста с 24 августа. Заметная часть аудитории увидит деградацию.

Что делаем: Ни один смысл не держится на цвете и на вёрстке. Главная кнопка главная позицией и формулировкой, отчёт обязан читаться простым текстом.

Первая версия

Делаем

  • Четыре услуги из семи: разбор аккаунта, тридцать похожих, разбор ролика, сценарий. Есть дорогое ядро и есть дешёвая проба за три кредита.
  • Разбор присланной строки и приём пересылок. Ответ всегда ответом на исходное сообщение.
  • Карточка по типу ввода с ценой на самой кнопке. Подтверждение перед дорогим действием.
  • Защита от двойного списания — условие выхода, а не «потом».
  • Один статусный пузырь со стадиями, финал новым сообщением со звуком.
  • Отчёт одним сообщением, кнопка «Отправить клиенту».
  • Три экрана ошибки, каждый начинается с «кредиты не списаны».
  • Шесть команд, описание бота, история последних десяти отчётов простым списком.

Откладываем сознательно

  • Наблюдение и отчёты по нему — тянут планировщик, регулярные пуши и риск мьюта, то есть отдельный продукт внутри продукта.
  • Разбор своего контента — без брифинга это мусор за 31 кредит, а брифинг тянет весь контур форм.
  • Mini App целиком: пока нет объёма, список сообщением дешевле и находимее.
  • PDF — добавляем, когда увидим, что отчёты действительно пересылают, а не читают сами.
  • Модель в роутере — в первой версии работает только разбор строки: ссылка и ник покрывают почти весь вход.
  • Темы в личной переписке и стриминг — усиления, ни одно не является условием пользы.

Что не проверено и на это нельзя ставить

  • Правило Telegram 6.2 про цифровые услуги — юристу. Мы платёжные методы Telegram не подключаем, ссылка на свою кассу в веб-окне — обычная практика, но формулировку стоит прочитать своими глазами.
  • Чеки, касса и порог самозанятого — бухгалтеру, до первой выручки, а не после.
  • Всё, что касается Mini App и эфемерных сообщений, через перепроверку по журналу изменений не проходило и в ТЗ без сверки не идёт.

Привязка телеграма к аккаунту, все шесть путей входа и правило, когда спрашивать код на почту, — в постановке для их команды: docs/integration/identity.md. Доставка уведомлений — notifications.md. Что какой вызов дёргает и почём — one-off-payments.md.