У Telegram давно была проблема: чтобы собрать список задач прямо в чате, приходилось лепить inline-кнопки или городить сторонних ToDo-ботов. Результат выглядел как кусок интерфейса, приклеенный к сообщению снизу. Не сообщение, не задача — что-то между.
Летом 2025 года Telegram добавил чеклисты как Premium-функцию для пользователей, а чуть позже — как полноценные методы в Bot API. Теперь бот может отправить список задач с галочками как обычное сообщение, от имени подключённого бизнес-аккаунта. Собеседник отмечает пункты, бот ловит события, автоматизация включается без сторонних конструкторов.
Это не замена таск-трекеру. 30 пунктов, без истории комментариев, без вложенных подзадач. Но для брифов, редакционных цепочек, тикетов и работы с подрядчиками — ровно тот слой, который раньше приходилось строить в трёх инструментах одновременно.
Что это
Представьте сообщение в чате, которое выглядит как список дел с галочками — не приклеенные снизу кнопки, а полноценное сообщение с пунктами. Каждый пункт — задача с собственным идентификатором. Отметил, снял отметку, добавил новый пункт — всё внутри одного сообщения. Это и есть чеклист в Telegram Bot API: встроенный тип данных, для которого не нужны сторонние ToDo-боты.
От ToDo-ботов с inline-кнопками разница принципиальная: чеклист не приклеен к сообщению, он сам является сообщением. Диалог, список задач и галочки — всё в одной точке экрана. Никаких переключений на отдельный интерфейс бота.
Но половина сценариев отпадает сразу. Чеклисты доступны только через business connection — когда бот подключён к бизнес-аккаунту Telegram и действует от его имени, а не от своего. Компания или специалист подключает бота через Telegram Business, и после этого бот может отправлять списки задач собеседникам аккаунта.
Внимание: Чеклист — это сообщение особого типа. Его нельзя отправить через стандартный sendMessage с inline-клавиатурой: для него выделены отдельные методы sendChecklist и editMessageChecklist и отдельные объекты InputChecklist и InputChecklistTask.
Как начать использовать
- У владельца бизнес-аккаунта должен быть Telegram Premium — без него Business-режим недоступен.
- Бот привязывается к аккаунту через настройки Telegram Business → Chatbots.
- В обработчике бота нужно поймать апдейт business_connection и сохранить business_connection_id — без этого идентификатора ни один метод чеклиста не сработает.
Пять минут на подключение, не преувеличение. Если Premium есть и бот уже создан через @BotFather, остальное — пара экранов в настройках.
Зачем нужно
Представьте редакционный конвейер: тема согласована, outline готов, черновик написан, правка внесена, обложка сделана, публикация запланирована. Шесть этапов, каждый из которых надо отследить. Обычный маршрут — поставить задачи в Notion, продублировать статусы в чат с клиентом, периодически проверять что отмечено, а что нет.
Чеклист сворачивает этот маршрут в одно сообщение. Бот присылает список этапов прямо в диалог с клиентом. Клиент отмечает галочками подтверждённые пункты, и сразу видно, где он застрял — без отдельных CRM-порталов, без логинов, без переключений между тремя вкладками.
А если на бэкенде повесить обработчик на события чеклиста, то отметка одного пункта может автоматически менять статус карточки в Notion, слать уведомление в общий чат команды или запускать следующий этап пайплайна. Чеклист становится триггером автоматизации, а не просто визуальным элементом.
Как устроено
Business connection
Business connection — канал связи между ботом и бизнес-аккаунтом в Telegram. При подключении генерируется business_connection_id — уникальный идентификатор этого канала. Все методы, где бот действует от имени бизнес-аккаунта, требуют этот идентификатор как обязательный параметр.
Передать 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.
Сообщение обновляется на месте, идентификаторы задач сохраняются.
Ссылки
Ссылки
- Документация: Telegram Bot API
- Статья: Анонс чеклистов в Telegram
- Документация: Business в Telegram API