У Telegram давно была проблема: чтобы собрать список задач прямо в чате, приходилось лепить inline-кнопки или городить сторонних ToDo-ботов. Результат выглядел как кусок интерфейса, приклеенный к сообщению снизу. Не сообщение, не задача — что-то между.

Летом 2025 года Telegram добавил чеклисты как Premium-функцию для пользователей, а чуть позже — как полноценные методы в Bot API. Теперь бот может отправить список задач с галочками как обычное сообщение, от имени подключённого бизнес-аккаунта. Собеседник отмечает пункты, бот ловит события, автоматизация включается без сторонних конструкторов.

Это не замена таск-трекеру. 30 пунктов, без истории комментариев, без вложенных подзадач. Но для брифов, редакционных цепочек, тикетов и работы с подрядчиками — ровно тот слой, который раньше приходилось строить в трёх инструментах одновременно.

Что это

Представьте сообщение в чате, которое выглядит как список дел с галочками — не приклеенные снизу кнопки, а полноценное сообщение с пунктами. Каждый пункт — задача с собственным идентификатором. Отметил, снял отметку, добавил новый пункт — всё внутри одного сообщения. Это и есть чеклист в Telegram Bot API: встроенный тип данных, для которого не нужны сторонние ToDo-боты.

От ToDo-ботов с inline-кнопками разница принципиальная: чеклист не приклеен к сообщению, он сам является сообщением. Диалог, список задач и галочки — всё в одной точке экрана. Никаких переключений на отдельный интерфейс бота.

Официальный пост Telegram о чеклистах в чатах

Но половина сценариев отпадает сразу. Чеклисты доступны только через business connection — когда бот подключён к бизнес-аккаунту Telegram и действует от его имени, а не от своего. Компания или специалист подключает бота через Telegram Business, и после этого бот может отправлять списки задач собеседникам аккаунта.

Внимание: Чеклист — это сообщение особого типа. Его нельзя отправить через стандартный sendMessage с inline-клавиатурой: для него выделены отдельные методы sendChecklist и editMessageChecklist и отдельные объекты InputChecklist и InputChecklistTask.

Как начать использовать

  1. У владельца бизнес-аккаунта должен быть Telegram Premium — без него Business-режим недоступен.
  2. Бот привязывается к аккаунту через настройки Telegram Business → Chatbots.
  3. В обработчике бота нужно поймать апдейт business_connection и сохранить business_connection_id — без этого идентификатора ни один метод чеклиста не сработает.

Пять минут на подключение, не преувеличение. Если Premium есть и бот уже создан через @BotFather, остальное — пара экранов в настройках.

Зачем нужно

Представьте редакционный конвейер: тема согласована, outline готов, черновик написан, правка внесена, обложка сделана, публикация запланирована. Шесть этапов, каждый из которых надо отследить. Обычный маршрут — поставить задачи в Notion, продублировать статусы в чат с клиентом, периодически проверять что отмечено, а что нет.

Чеклист сворачивает этот маршрут в одно сообщение. Бот присылает список этапов прямо в диалог с клиентом. Клиент отмечает галочками подтверждённые пункты, и сразу видно, где он застрял — без отдельных CRM-порталов, без логинов, без переключений между тремя вкладками.

А если на бэкенде повесить обработчик на события чеклиста, то отметка одного пункта может автоматически менять статус карточки в Notion, слать уведомление в общий чат команды или запускать следующий этап пайплайна. Чеклист становится триггером автоматизации, а не просто визуальным элементом.

Как устроено

Business connection

Business connection — канал связи между ботом и бизнес-аккаунтом в Telegram. При подключении генерируется business_connection_id — уникальный идентификатор этого канала. Все методы, где бот действует от имени бизнес-аккаунта, требуют этот идентификатор как обязательный параметр.

Официальная страница Telegram Business с возможностями бизнес-аккаунта и чат-ботов

Передать business_connection_id — первое, что нужно сделать в запросе. Без него API отклонит вызов. Это не настройка «по желанию», а prerequisite: пока идентификатор не получен и не сохранён, методы чеклистов просто не существуют для вашего бота. Стандартные сообщения от имени самого бота здесь не работают.

Метод sendChecklist

Базовый метод для создания чеклиста. Принимает business_connection_id, chat_id и объект InputChecklist с заголовком и задачами.

{
  "business_connection_id": "AAAAAA-...",
  "chat_id": 123456789,
  "checklist": {
    "title": "Бриф на статью",
    "tasks": [
      { "id": 1, "text": "Согласовать тему" },
      { "id": 2, "text": "Подготовить outline" },
      { "id": 3, "text": "Написать черновик" }
    ],
    "others_can_add_tasks": true,
    "others_can_mark_tasks_as_done": true
  }
}

Ключевые правила:

  • business_connection_id обязателен. Без него метод не сработает.
  • chat_id принимает числовой идентификатор или @username — но на практике числовой ID надёжнее, особенно при работе через business connection.
  • id каждой задачи — уникальное положительное число. По этому идентификатору задача отслеживается при редактировании списка.
  • others_can_add_tasks и others_can_mark_tasks_as_done по умолчанию false. Для совместных списков их нужно явно включить — иначе получится список «только для чтения», и собеседник не сможет ничего отметить.
  • Текст задачи — от 1 до 100 символов. Заголовок чеклиста — от 1 до 255 символов.
  • От 1 до 30 задач в одном чеклисте. Пустой массив или больше 30 — API вернёт ошибку.

Совет: Планируйте список заранее или генерируйте его на бэкенде с явной проверкой длины. Если бриф большой, разбейте его на несколько связанных чеклистов, а бэклог держите в Notion. В Telegram оставляйте верхнеуровневый список из ключевых шагов.

Метод editMessageChecklist

Метод editMessageChecklist меняет содержимое чеклиста прямо в сообщении, которое уже отправлено. Заголовок, состав задач, права доступа — всё редактируется на месте. Параметры знакомые: business_connection_id, chat_id, message_id и свежий объект InputChecklist с обновлёнными данными.

Удалять и пересылать ничего не нужно. Появился новый этап в процессе — вызвали editMessageChecklist на том же сообщении, и список обновился. Старые идентификаторы задач остаются в силе, новые получают свои id. Для длинных процессов это удобнее, чем плодить сообщения в чате.

События от чеклиста

Telegram присылает боту два типа служебных апдейтов, связанных с чеклистом:

  • checklist_tasks_added — кто-то добавил задачу в чеклист.
  • checklist tasks done — кто-то отметил задачу как выполненную либо снял отметку.

Объект ChecklistTasksDone содержит идентификаторы задач, отмеченных как выполненные (marked_as_done_task_ids) и как невыполненные (marked_as_not_done_task_ids). Объект ChecklistTasksAdded — список добавленных задач типа ChecklistTask.

На эти события можно навесить практически любую автоматизацию: пуш в командный чат, обновление записи в Notion или CRM, смену статуса задачи на бэкенде, активацию следующего шага процесса.

Начиная с Bot API 9.2 (август 2025) доступно поле checklist_task_id в ReplyParameters — бот может отправить reply на отдельную задачу внутри чеклиста. Удобно для комментариев к конкретному шагу, не к списку в целом.

Тарифы и лимиты

ПараметрЗначение
Тариф владельцаTelegram Premium (Business-функции)
Тариф участниковЛюбой — отмечать задачи могут пользователи без Premium
Минимум задач1
Максимум задач30
Длина заголовка1–255 символов
Длина текста задачи1–100 символов
Стоимость APIБесплатно — Bot API не тарифицируется

Когда использовать

Бриф на контент

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

Контроль редакционного процесса

На каждую статью — свой чеклист с этапами от согласования темы до публикации. Как только пункт отмечен, бот перехватывает событие checklist_tasks_done и переключает статус карточки в Notion. Руками статусы в двух системах ставить больше не нужно.

Тикеты и заявки клиентов

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

Чеклисты для подрядчиков

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

Внутренние ритуалы команды

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

Пример

Минимальный вызов sendChecklist через webhook-обработчик на Python:

import requests

BOT_TOKEN = "your_bot_token"
API_BASE = f"https://api.telegram.org/bot{BOT_TOKEN}"

def send_brief_checklist(business_connection_id: str, chat_id: int):
    response = requests.post(
        f"{API_BASE}/sendChecklist",
        json={
            "business_connection_id": business_connection_id,
            "chat_id": chat_id,
            "checklist": {
                "title": "Бриф на статью",
                "tasks": [
                    {"id": 1, "text": "Согласовать тему"},
                    {"id": 2, "text": "Подготовить outline"},
                    {"id": 3, "text": "Написать черновик"},
                    {"id": 4, "text": "Внести правки"},
                    {"id": 5, "text": "Опубликовать"},
                ],
                "others_can_add_tasks": False,
                "others_can_mark_tasks_as_done": True,
            },
        },
    )
    return response.json()

Заметьте: others_can_add_tasks здесь False — клиент не может добавлять свои пункты в бриф, только отмечать подтверждённые. others_can_mark_tasks_as_done — True, чтобы клиент мог ставить галочки.

Через неделю клиент вдруг просит добавить этап «согласовать с юристом». Вместо нового сообщения — editMessageChecklist:

def add_legal_step(business_connection_id: str, chat_id: int, message_id: int):
    response = requests.post(
        f"{API_BASE}/editMessageChecklist",
        json={
            "business_connection_id": business_connection_id,
            "chat_id": chat_id,
            "message_id": message_id,
            "checklist": {
                "title": "Бриф на статью",
                "tasks": [
                    {"id": 1, "text": "Согласовать тему"},
                    {"id": 2, "text": "Подготовить outline"},
                    {"id": 3, "text": "Написать черновик"},
                    {"id": 4, "text": "Согласовать с юристом"},
                    {"id": 5, "text": "Внести правки"},
                    {"id": 6, "text": "Опубликовать"},
                ],
                "others_can_add_tasks": False,
                "others_can_mark_tasks_as_done": True,
            },
        },
    )
    return response.json()

Новая задача получила id: 4, а «Внести правки» сдвинулась на id: 5. Идентификаторы не обязаны идти подряд — главное, чтобы каждый был уникальным положительным числом в рамках одного чеклиста.

Ограничения

Ограничения

Что учитывать

Чеклисты в Telegram Bot API имеют жёсткие рамки, которые нужно учитывать до внедрения.

Потолок 30 задач — Это потолок, не планка.

Если бриф или процесс требует больше пунктов, придётся разбивать на несколько связанных чеклистов или держать детальный бэклог во внешнем инструменте, а в Telegram оставлять верхнеуровневый список. 30 пунктов кончаются быстро, особенно на сложных многоступенчатых процессах.

Только business connection — Методы sendChecklist и editMessageChecklist работают исключительно от имени подключённого бизнес-аккаунта.

Бот не может отправить чеклист от собственного имени. У владельца аккаунта должен быть Telegram Premium, без него Business-режим недоступен. Это отсекает использование для обычных ботов без бизнес-подписки.

Нет истории комментариев — Чеклист не поддерживает комментарии к отдельным задачам.

Можно ответить на конкретный пункт через checklist_task_id в ReplyParameters (с Bot API 9.2), но это просто reply-сообщение, а не встроенный комментарий. История отметок хранится в самом сообщении, но без временной шкалы и авторства в отдельном интерфейсе.

Антипаттерны

Антипаттерны

Чего не делать

Несколько типичных ошибок при работе с чеклистами в Bot API:

Использовать как таск-трекер — 30 пунктов кончаются быстро, комментариев и истории нет.

Это формат для одной итерации процесса, а не для вечного бэклога. Если нужен backlog с приоритетами, метками, дедлайнами и зависимостями — используйте Notion, Trello или Linear, а чеклист оставьте для точечного контроля конкретной задачи.

Отправлять без business connection — Метод вернёт ошибку.

Проверьте, что business_connection_id получен и сохранён, прежде чем вызывать sendChecklist. Обработчик должен ловить апдейт business_connection при подключении бота к аккаунту.

Забывать про others_can_mark_tasks_as_done — Без этого флага список получается «только для чтения».

Клиент или подрядчик видит задачи, но не может отметить ни одну. Для совместных сценариев оба флага — others_can_add_tasks и others_can_mark_tasks_as_done — нужно выставлять явно.

Генерировать id через Math.random() — При редактировании это создаст хаос: одинаковые или отрицательные ID, дубли, невозможность найти нужную задачу.

Используйте монотонный счётчик или детерминированный хеш — каждый ID должен быть уникальным положительным числом.

Использовать sendChecklist для обновления — Для смены состояния существует editMessageChecklist, а не повторный sendChecklist.

Повторная отправка создаст новое сообщение, а не обновит существующее. Два чеклиста в чате на одну задачу — путаница для клиента и сломанная автоматизация.

Чеклист

Чеклист

Проверка перед запуском

Перед первым запуском чеклиста в продакшен проверьте каждый пункт:

Тридцать пунктов, два метода, два события — кажется, немного. Но связка чеклистов в Telegram с Notion и бэкенд-автоматизациями убирает половину рутины из согласований с клиентами и подрядчиками. Контур коммуникации, который раньше расползался по пяти вкладкам, умещается в одно сообщение.

Premium у владельца — Убедитесь, что у владельца бизнес-аккаунта есть Telegram Premium.

Без него Business-режим и все методы чеклиста недоступны. Проверяется в настройках Telegram Business.

Бот привязан к аккаунту — Подключение выполнено через раздел Telegram Business

→ Chatbots. Боту выданы права на чтение и отправку сообщений от имени аккаунта-владельца.

business_connection_id сохранён — Обработчик бота ловит апдейт business_connection при подключении и сохраняет business_connection_id.

Без этого идентификатора ни один метод чеклиста не сработает.

ID задач уникальны и положительны — Каждый id в массиве tasks — уникальное положительное число.

Генерируется монотонным счётчиком или хешем, не случайным числом.

Количество задач от 1 до 30 — Количество задач — в диапазоне 1–30.

Заголовок — до 255 символов включительно. Текст отдельной задачи — до 100 символов. Все три проверки стоит выполнять на бэкенде до формирования API-запроса, чтобы не ловить ошибки от Telegram.

Флаги совместной работы выставлены — Для сценариев, где клиент или команда отмечает задачи, others_can_mark_tasks_as_done и при необходимости others_can_add_tasks установлены в true.

По умолчанию оба false.

Обработчик слушает события

— Обработчик бота принимает checklist_tasks_added и checklist_tasks_done для автоматизации: уведомлений, синхронизации со внешними системами, запуска следующих этапов.

Редактирование через editMessageChecklist — Для обновления существующего чеклиста используется editMessageChecklist, а не повторный sendChecklist.

Сообщение обновляется на месте, идентификаторы задач сохраняются.

Ссылки

Ссылки