Получение ID чата или канала

chat_id — идентификатор чата или канала, в который добавлен бот. Он нужен большинству методов API, которые работают в контексте конкретного чата, например, чтобы отправить сообщение через метод POST /messages или закрепить пост через метод PUT /chats/{chatId}/pin

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

В документации встречаются два написания: chat_id (query-параметры) и chatId (path-параметры). Это один и тот же идентификатор

Получение chat_id

В зависимости от типа объекта используйте подходящий способ получения chat_id или chatId:

Тип объектаКак получить chat_id
Чат или каналТолько через подписку: POST /subscriptions или GET /updates
chat_id придёт в объекте Update на выбранные вами события – например, bot_added или bot_started
Мини-приложениеЛибо через подписку (см. описание для чата и канала выше), либо на клиенте через window.WebApp.initData библиотеки MAX Bridge

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

Пример работы с chat_id

  1. Cоздайте подписку через POST /subscriptions и укажите нужные типы событий в параметре update_types[], например bot_added или bot_started. Список поддерживаемых типов событий — в объекте Update
  2. Получите chat_id в событии — о том, как это сделать, см. в таблице выше
  3. Сохраните chat_id:
    • разверните на своей стороне хранилище данных
    • при получении каждого события с chat_id — сохраните его, если он ещё не сохранён
    • обработайте возможные дубли (одно и то же событие может прийти повторно)
    • удалите chat_id при возникновении соответствующих событий, например bot_removed
  4. Используйте сохранённый chat_id для вызовов API. После того как chat_id окажется в вашем хранилище, вы сможете использовать его во всех методах, где он требуется:
    • POST /messages — отправить сообщение в чат
    • GET /chats/{chat_id}/members — получить участников группового чата или канала
    • POST /chats/{chat_id}/actions — отправить действия бота в групповой чат
    • и любые другие методы, принимающие chat_id как параметр

Использование Long Polling для получения списка чатов и каналов для бота не предусмотрено


ℹ️ Если у вас возникли вопросы, посмотрите раздел с ответами