Сообщения
Раздел «Сообщения» — отправка, редактирование и удаление сообщений в текстовом канале, получение
истории сообщений, индикатор набора текста и реакции. Это пользовательский аналог методов
SendMessage/UpdateMessage/DeleteMessage/Typing/AddReaction/RemoveReaction из
Bot API — семантика та же, разница только в том, что здесь
действует сам пользователь через свой accessToken, а не бот через токен бота.
Все запросы этого раздела требуют заголовок Authorization: Bearer <accessToken>.
Объект Message
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор сообщения. |
channelId | string | Канал, в котором отправлено сообщение. |
author | User | Автор сообщения. |
content | string | Текст сообщения. |
createdAt | string | Когда сообщение создано (ISO8601). |
updatedAt | string | Когда сообщение последний раз редактировалось (ISO8601). |
isEdited | boolean | Было ли сообщение отредактировано. |
isDeleted | boolean | Помечено ли сообщение как удалённое. |
replyTo | string | Id сообщения, на которое отвечает это сообщение — пусто, если это не ответ. |
forwardedFrom? | string | Если сообщение создано через «Переслать сообщение» — id исходного сообщения. Не заполнено у обычных сообщений (в отличие от replyTo, где пустая строка означает «не ответ», здесь поле явно отсутствует). |
attachments | array | Вложения сообщения, см. «Вложения». |
reactions | object | Реакции на сообщение: ключ — emoji, значение — { userIds: [...] }. |
interactionId? | string | Если сообщение — ответ бота на interaction: id этого interaction'а. |
interactionCommandName? | string | Имя команды, вызвавшей interaction. |
interactionUserId? | string | Пользователь, вызвавший interaction. |
componentsJson? | string | JSON компонентов (кнопки/меню), прикреплённых к сообщению — см. «Компоненты и модальные окна». |
Объект ошибки
При любой ошибке вместо 200 OK возвращается default-ответ:
| Поле | Тип | Описание |
|---|---|---|
code | integer | Числовой код ошибки (google.rpc.Code). |
message | string | Человекочитаемое описание ошибки. |
details | array | Дополнительные структурированные детали ошибки (google.protobuf.Any); в большинстве случаев пуст. |
Отправить сообщение
/v1/messagesОтправляет сообщение в текстовый канал.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
channelId | string | Канал, в который отправляется сообщение. |
content | string | Текст сообщения. |
replyTo? | string | Id сообщения, на которое нужно ответить. |
attachmentIds? | array<string> | Id уже загруженных вложений (см. «Вложения»), которые нужно прикрепить к сообщению. |
{
"channelId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"content": "привет!",
"attachmentIds": []
}
Ответ 200 OK
Объект Message.
Ответ default (ошибка)
Стандартный объект ошибки.
Изменить сообщение
/v1/messages/{id}Редактирует ранее отправленное сообщение. Редактировать можно только собственные сообщения.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор сообщения. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
content | string | Новый текст сообщения. |
Ответ 200 OK
Обновлённый объект Message (с isEdited: true).
Ответ default (ошибка)
Стандартный объект ошибки.
Удалить сообщение
/v1/messages/{id}:deleteУдаляет сообщение.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор сообщения. |
Ответ 200 OK
| Поле | Тип | Описание |
|---|---|---|
id | string | Id удалённого сообщения. |
success | boolean | Признак успешного удаления. |
Ответ default (ошибка)
Стандартный объект ошибки.
Получить сообщение
/v1/messages/{messageId}Возвращает одно сообщение по его id — полезно, когда известен только messageId (например, из
уведомления или ссылки), без похода за всей историей канала.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
messageId | string | Идентификатор сообщения. |
Ответ 200 OK
Объект Message.
Ответ default (ошибка)
Стандартный объект ошибки.
Переслать сообщение
/v1/messages:forwardПересылает сообщение в один или несколько каналов одним запросом. Пересланное сообщение — это
новое сообщение с полем forwardedFrom, указывающим на исходное; исходное сообщение не изменяется.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
sourceMessageId | string | Id пересылаемого сообщения. |
destinationChannelIds | array<string> | Каналы, в которые нужно переслать сообщение. |
idempotencyKey | string | Ключ идемпотентности — повторный запрос с тем же ключом не создаёт дублей. |
{
"sourceMessageId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationChannelIds": ["a1b2c3d4-5e6f-4789-9abc-def012345678"],
"idempotencyKey": "b7e1c9a0-2f3d-4a5b-9c6d-7e8f9a0b1c2d"
}
Ответ 200 OK
| Поле | Тип | Описание |
|---|---|---|
results | array | Результат пересылки в каждый из destinationChannelIds, по одному объекту ForwardMessageResult на канал. |
Объект ForwardMessageResult
| Поле | Тип | Описание |
|---|---|---|
channelId | string | Канал, в который выполнялась пересылка. |
success | boolean | Успешна ли пересылка в этот канал. |
errorMessage | string | Причина ошибки, если success: false. |
message | Message | Созданное пересланное сообщение, если success: true. |
Пересылка обрабатывается по каждому каналу независимо — ошибка в одном канале (например, нет доступа) не отменяет пересылку в остальные.
Ответ default (ошибка)
Стандартный объект ошибки — например, если исходное сообщение не найдено или удалено.
Получить сообщения вокруг
/v1/messages/channel/{channelId}/around/{messageId}Возвращает окно сообщений вокруг указанного — например, чтобы открыть канал сразу на сообщении из пуш-уведомления или ссылки, с некоторым контекстом до и после.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
channelId | string | Канал, в котором ищем. |
messageId | string | Сообщение, вокруг которого нужно получить контекст. |
Query-параметры
| Поле | Тип | Описание |
|---|---|---|
before? | integer | Сколько сообщений до целевого вернуть. |
after? | integer | Сколько сообщений после целевого вернуть. |
Ответ 200 OK
| Поле | Тип | Описание |
|---|---|---|
messages | array | Список объектов Message, включая целевое. |
targetFound | boolean | false, если messageId не существует, не принадлежит этому каналу или удалено — в этом случае messages возвращает лишь то, что удалось получить без учёта позиции цели. |
Ответ default (ошибка)
Стандартный объект ошибки.
Получить историю канала
/v1/messages/channel/{channelId}Возвращает сообщения канала постранично, от новых к старым.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
channelId | string | Канал, чью историю нужно получить. |
Query-параметры
| Поле | Тип | Описание |
|---|---|---|
limit? | integer | Сколько сообщений вернуть за один запрос. По умолчанию 50. |
beforeId? | string | Id сообщения, начиная с которого (не включая его) нужно вернуть более старые сообщения — используется для пагинации «назад по истории». |
Ответ 200 OK
| Поле | Тип | Описание |
|---|---|---|
messages | array | Список объектов Message. |
Ответ default (ошибка)
Стандартный объект ошибки.
Индикатор набора текста
/v1/messages/channel/{channelId}/typingСообщает остальным участникам канала, что пользователь сейчас печатает — простой булев флаг, исчезает сам через несколько секунд, как и у ботов (см. «Typing» в Bot API).
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
channelId | string | Канал, в котором пользователь печатает. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
isTyping | boolean | true — начать показывать индикатор, false — снять его раньше таймаута. |
Ответ 200 OK
| Поле | Тип | Описание |
|---|---|---|
success | boolean | Всегда true при успешном ответе. |
Ответ default (ошибка)
Стандартный объект ошибки.
Добавить реакцию
/v1/messages/{messageId}/reactionsДобавляет emoji-реакцию текущего пользователя на сообщение.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
messageId | string | Сообщение, на которое ставится реакция. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
emoji | string | Emoji реакции. |
Ответ 200 OK
Обновлённый объект Message с добавленной реакцией в reactions.
Ответ default (ошибка)
Стандартный объект ошибки.
Убрать реакцию
/v1/messages/{messageId}/reactions:removeУбирает ранее поставленную текущим пользователем реакцию с сообщения.
Параметры пути
| Поле | Тип | Описание |
|---|---|---|
messageId | string | Сообщение, с которого убирается реакция. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
emoji | string | Emoji реакции, которую нужно убрать. |
Ответ 200 OK
Обновлённый объект Message без этой реакции текущего пользователя.
Ответ default (ошибка)
Стандартный объект ошибки.