Получение 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
- Cоздайте подписку через POST /subscriptions и укажите нужные типы событий в параметре
update_types[], напримерbot_addedилиbot_started. Список поддерживаемых типов событий — в объекте Update - Получите
chat_idв событии — о том, как это сделать, см. в таблице выше - Сохраните
chat_id:- разверните на своей стороне хранилище данных
- при получении каждого события с
chat_id— сохраните его, если он ещё не сохранён - обработайте возможные дубли (одно и то же событие может прийти повторно)
- удалите
chat_idпри возникновении соответствующих событий, напримерbot_removed
- Используйте сохранённый
chat_idдля вызовов API. После того какchat_idокажется в вашем хранилище, вы сможете использовать его во всех методах, где он требуется:- POST
/messages— отправить сообщение в чат - GET
/chats/{chat_id}/members— получить участников группового чата или канала - POST
/chats/{chat_id}/actions— отправить действия бота в групповой чат - и любые другие методы, принимающие
chat_idкак параметр
- POST
Использование Long Polling для получения списка чатов и каналов для бота не предусмотрено
Если у вас возникли вопросы, посмотрите раздел с ответами