На этой страницеРегистрация команды
Команды
Добавьте явное действие в настройки, меню чата или меню сообщения.
Регистрация команды
api.commands.register принимает описание действия и возвращает Promise с Disposable. Дождитесь регистрации внутри activate.
await api.commands.register({
id: "hello",
title: "Показать приветствие",
placement: "composer",
async run() {
await api.ui.toast("Привет!");
}
});
Манифест такой команды объявляет ui.contribute со scope composer.
Размещения
| Placement | Где пользователь найдёт команду |
|---|---|
composer |
Долгое нажатие на аватар в шапке чата |
chatToolbar |
То же меню команд текущего чата |
selection |
Меню выбранного сообщения |
messageMenu |
Меню сообщения |
settings |
Настройки установленного плагина |
Scope должен совпадать с размещением. Дополнительное чтение или изменение данных требует своих возможностей.
Контекст пользователя
Команда из нативного меню даёт текущий контекст действия, а не постоянный доступ к сообщениям или черновику. Запрашивайте нужные сведения внутри run, а не заранее в activate.
Отдельный обработчик
Допустимо передать обработчик вторым аргументом:
await api.commands.register(
{ id: "ready", title: "Проверить", placement: "settings" },
async () => { await api.ui.toast("Готово"); }
);
Убрать команду
const registration = await api.commands.register({
id: "temporary",
title: "Временная команда",
placement: "settings",
async run() {}
});
await registration.dispose();
При остановке runtime принадлежащие ему команды также освобождаются хостом. Не создавайте одинаковую регистрацию при каждом событии.