Перейти к основному содержимому
Версия: 2026.2.4

Interactions

Interactions — Discord-style слэш-команды: команды с параметрами, которые бот регистрирует заранее, а пользователь вызывает через / в клиенте. Сюда же относится исполнение — вызов команды, клик по кнопке/меню на сообщении бота, сабмит модального окна и запрос автодополнения. Полностью жизненный цикл одного interaction'а (от вызова до ответа бота через RespondToInteraction) описан в «Interactions API: слэш-команды» — здесь только HTTP-контракт.

Раздел логически разбит на две части с разной аутентификацией:

ЧастьКто вызываетЗаголовок Authorization
Регистрация команд (RegisterCommand, UpdateCommand, DeleteCommand, GetBotCommands)Владелец бота или сам ботBearer <accessToken> (владелец) либо Bot <botToken> с intent ApplicationCommands (сам бот)
Просмотр команд группы, исполнение (ExecuteCommand, RequestAutocomplete, InvokeMessageComponent, SubmitModal)Любой участник группыBearer <accessToken> — это действие человека, не бота

Объект BotCommand​

ПолеТипОписание
idstringИдентификатор команды.
botIdstringБот, которому принадлежит команда.
namestringНазвание команды (то, что пользователь вводит после /).
descriptionstringОписание команды.
optionsarrayПараметры команды — объекты CommandOption.
defaultMemberPermissionsinteger (int64)Битовая маска Permissions — минимальные права, нужные участнику, чтобы видеть/вызывать команду.
createdAt / updatedAtstringКогда команда создана/обновлена (ISO8601).

CommandOption​

ПолеТипОписание
namestringНазвание параметра.
descriptionstringОписание параметра.
typeCommandOptionTypeТип значения параметра.
requiredbooleanОбязателен ли параметр.
choicesarrayСтатичный список допустимых значений — объекты { name, value }.
autocompletebooleanЕсли true, choices игнорируется — сервер вместо этого шлёт боту RequestAutocomplete по мере ввода.

CommandOptionType​

STRING, INTEGER, BOOLEAN, USER, CHANNEL, ROLE, NUMBER, SUB_COMMAND, SUB_COMMAND_GROUP.

Объект InteractionResult​

Возвращают все методы исполнения — результат ответа, который бот дал через RespondToInteraction.

ПолеТипОписание
typestringВид ответа: CHANNEL_MESSAGE, DEFERRED_CHANNEL_MESSAGE, UPDATE_MESSAGE, DEFERRED_UPDATE_MESSAGE, MODAL.
contentstringТекст сообщения (если применимо).
componentsJsonstringJSON ActionRow[] — компоненты на сообщении, см. «Компоненты и модальные окна».
modalJsonstringJSON модального окна (только для type: MODAL).
ephemeralbooleanВиден ли ответ только вызвавшему команду пользователю.
messageIdstringId созданного/обновлённого сообщения (если применимо).

Объект ошибки​

При любой ошибке вместо 200 OK возвращается default-ответ:

ПолеТипОписание
codeintegerЧисловой код ошибки (google.rpc.Code).
messagestringЧеловекочитаемое описание ошибки.
detailsarrayДополнительные структурированные детали ошибки (google.protobuf.Any); в большинстве случаев пуст.

Регистрация команд​

Зарегистрировать команду​

POST/v1/interactions/bots/{botId}/commands

Параметры пути: botId. Тело запроса: name, description, options? (массив CommandOption), defaultMemberPermissions?.

Ответ 200 OK: созданный объект BotCommand.

Изменить команду​

POST/v1/interactions/bots/{botId}/commands/{commandId}

Параметры пути: botId, commandId. Тело запроса: те же поля, что у регистрации.

Ответ 200 OK: обновлённый объект BotCommand.

Удалить команду​

POST/v1/interactions/bots/{botId}/commands/{commandId}:delete

Параметры пути: botId, commandId.

Ответ 200 OK: пустой объект {}.

Команды бота​

GET/v1/interactions/bots/{botId}/commands

Параметры пути: botId.

Ответ 200 OK: commands — массив объектов BotCommand.

Команды группы​

GET/v1/interactions/groups/{groupId}/commands

Команды сразу всех ботов-участников группы за один вызов, вместо того чтобы перечислять участников группы и вызывать «Команды бота» для каждого. Доступен любому участнику группы — BotCommand.botId позволяет отличить, какому боту принадлежит каждая команда.

Параметры пути: groupId.

Ответ 200 OK: commands — массив объектов BotCommand.

Аутентификация — только владелец или сам бот

В отличие от «Команды группы», четыре метода выше (регистрация/изменение/удаление/ список команд конкретного бота) вызываются владельцем бота либо самим ботом — не произвольным участником группы.


Исполнение​

Требуют Authorization: Bearer <accessToken> — это действие участника группы, не бота. Членство в группе и права на канал проверяются так же, как и для обычных сообщений (тот же SendMessages-чек).

Вызвать команду​

POST/v1/interactions/bots/{botId}/commands/{commandId}:execute

Параметры пути: botId, commandId. Тело запроса: channelId, groupId?, options? — массив { name, value } со значениями введённых пользователем параметров.

Ответ 200 OK: объект InteractionResult.

Запросить автодополнение​

POST/v1/interactions/bots/{botId}/commands/{commandId}:autocomplete

Вызывается по мере ввода пользователем текста в параметр с autocomplete: true.

Параметры пути: botId, commandId. Тело запроса: channelId, groupId?, focusedOption — какой параметр сейчас в фокусе, options? — уже введённые значения остальных параметров.

Ответ 200 OK: choices — массив { name, value }, динамически сформированный ботом.

Клик по компоненту сообщения​

POST/v1/interactions/bots/{botId}/messages/{messageId}:invoke-component

Параметры пути: botId, messageId. Тело запроса: channelId, groupId?, customId — идентификатор кликнутого компонента (см. «Компоненты и модальные окна»), values? — выбранные значения (для select-меню с несколькими вариантами).

Ответ 200 OK: объект InteractionResult.

Отправить модальное окно​

POST/v1/interactions/bots/{botId}/modals:submit

Параметры пути: botId. Тело запроса: channelId, groupId?, customId — идентификатор модального окна, fields? — массив { name, value } со значениями полей формы.

Ответ 200 OK: объект InteractionResult.

Ответ default (ошибка, для всех методов исполнения): стандартный объект ошибки — например, FAILED_PRECONDITION, если бот не успел ответить в отведённое окно времени (10 секунд для команд/компонентов/модалок, 3 секунды для автодополнения).