CLI commands
Сообщение
openclaw message
Единая исходящая команда для отправки сообщений и действий канала (Discord/Google Chat/iMessage/Matrix/Mattermost (Plugin)/Microsoft Teams/Signal/Slack/Telegram/WhatsApp).
Использование
openclaw message <subcommand> [flags]Выбор канала:
--channelобязателен, если настроено больше одного канала.- Если настроен ровно один канал, он становится значением по умолчанию.
- Значения:
discord|googlechat|imessage|matrix|mattermost|msteams|signal|slack|telegram|whatsapp(для Mattermost требуется Plugin) openclaw messageсопоставляет выбранный канал с его владельцем-Plugin, когда указан--channelили цель с префиксом канала; иначе загружает настроенные Plugin каналов для вывода канала по умолчанию.
Форматы целей (--target):
- WhatsApp: E.164, JID группы или JID канала/рассылки WhatsApp (
...@newsletter) - Telegram: id чата,
@usernameили цель темы форума (-1001234567890:topic:42либо--thread-id 42) - Discord:
channel:<id>илиuser:<id>(или упоминание<@id>; необработанные числовые id считаются каналами) - Google Chat:
spaces/<spaceId>илиusers/<userId> - Slack:
channel:<id>илиuser:<id>(необработанный id канала принимается) - Mattermost (Plugin):
channel:<id>,user:<id>или@username(id без префикса считаются каналами) - Signal:
+E.164,group:<id>,signal:+E.164,signal:group:<id>илиusername:<name>/u:<name> - iMessage: handle,
chat_id:<id>,chat_guid:<guid>илиchat_identifier:<id> - Matrix:
@user:server,!room:serverили#alias:server - Microsoft Teams: id беседы (
19:...@thread.tacv2),conversation:<id>илиuser:<aad-object-id>
Поиск по имени:
- Для поддерживаемых провайдеров (Discord/Slack/и т. д.) имена каналов вроде
Helpили#helpсопоставляются через кэш каталога. - При промахе кэша OpenClaw попытается выполнить живой поиск в каталоге, если провайдер это поддерживает.
Общие флаги
--channel <name>--account <id>--target <dest>(целевой канал или пользователь для send/poll/read/и т. д.)--targets <name>(повторяется; только широковещательная отправка)--json--dry-run--verbose
Поведение SecretRef
openclaw messageразрешает поддерживаемые SecretRef каналов перед выполнением выбранного действия.- Разрешение по возможности ограничивается активной целью действия:
- область канала, когда задан
--channel(или выведен из целей с префиксом, напримерdiscord:...) - область аккаунта, когда задан
--account(глобальные значения канала + поверхности выбранного аккаунта) - когда
--accountне указан, OpenClaw не принудительно использует область SecretRef аккаунтаdefault
- область канала, когда задан
- Неразрешенные SecretRef на несвязанных каналах не блокируют целевое действие сообщения.
- Если SecretRef выбранного канала/аккаунта не разрешен, команда для этого действия завершится закрытым отказом.
Действия
Основные
-
send- Каналы: WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost (Plugin)/Signal/iMessage/Matrix/Microsoft Teams
- Обязательно:
--target, плюс--message,--mediaили--presentation - Необязательно:
--media,--presentation,--delivery,--pin,--reply-to,--thread-id,--gif-playback,--force-document,--silent - Общие полезные нагрузки представления:
--presentationотправляет семантические блоки (text,context,divider,buttons,select), которые ядро отображает через объявленные возможности выбранного канала. См. Представление сообщений. - Общие предпочтения доставки:
--deliveryпринимает подсказки доставки, например{ "pin": true };--pin— сокращение для закрепленной доставки, если канал это поддерживает. - Telegram + WhatsApp:
--force-document(отправлять изображения, GIF и видео как документы, чтобы избежать сжатия каналом) - Только Telegram:
--thread-id(id темы форума) - Только Slack:
--thread-id(временная метка темы;--reply-toиспользует то же поле) - Telegram + Discord:
--silent - Только WhatsApp:
--gif-playback; каналы/рассылки WhatsApp адресуются их собственным JID@newsletter.
-
poll- Каналы: WhatsApp/Telegram/Discord/Matrix/Microsoft Teams
- Обязательно:
--target,--poll-question,--poll-option(повторяется) - Необязательно:
--poll-multi - Только Discord:
--poll-duration-hours,--silent,--message - Только Telegram:
--poll-duration-seconds(5-600),--silent,--poll-anonymous/--poll-public,--thread-id
-
react- Каналы: Discord/Google Chat/Matrix/Nextcloud Talk/Signal/Slack/Telegram/WhatsApp
- Обязательно:
--message-id,--target - Необязательно:
--emoji,--remove,--participant,--from-me,--target-author,--target-author-uuid - Примечание:
--removeтребует--emoji(опустите--emoji, чтобы очистить собственные реакции там, где это поддерживается; см. /tools/reactions) - Только WhatsApp:
--participant,--from-me - Реакции группы Signal: требуется
--target-authorили--target-author-uuid - Nextcloud Talk: только добавление реакций;
--removeотклоняется с понятной ошибкой (см. /tools/reactions)
-
reactions- Каналы: Discord/Google Chat/Slack/Matrix
- Обязательно:
--message-id,--target - Необязательно:
--limit
-
read- Каналы: Discord/Slack/Matrix
- Обязательно:
--target - Необязательно:
--limit,--message-id,--before,--after - Только Slack:
--message-idчитает конкретную временную метку сообщения Slack; объедините с--thread-id, чтобы прочитать точный ответ в теме. - Только Discord:
--around
-
edit- Каналы: Discord/Slack/Matrix
- Обязательно:
--message-id,--message,--target
-
delete- Каналы: Discord/Slack/Telegram/Matrix
- Обязательно:
--message-id,--target
-
pin/unpin- Каналы: Discord/Slack/Matrix
- Обязательно:
--message-id,--target
-
pins(список)- Каналы: Discord/Slack/Matrix
- Обязательно:
--target
-
permissions- Каналы: Discord/Matrix
- Обязательно:
--target - Только Matrix: доступно, когда шифрование Matrix включено и действия проверки разрешены
-
search- Каналы: Discord
- Обязательно:
--guild-id,--query - Необязательно:
--channel-id,--channel-ids(повторяется),--author-id,--author-ids(повторяется),--limit
Темы
-
thread create- Каналы: Discord
- Обязательно:
--thread-name,--target(id канала) - Необязательно:
--message-id,--message,--auto-archive-min
-
thread list- Каналы: Discord
- Обязательно:
--guild-id - Необязательно:
--channel-id,--include-archived,--before,--limit
-
thread reply- Каналы: Discord
- Обязательно:
--target(id темы),--message - Необязательно:
--media,--reply-to
Эмодзи
-
emoji list- Discord:
--guild-id - Slack: без дополнительных флагов
- Discord:
-
emoji upload- Каналы: Discord
- Обязательно:
--guild-id,--emoji-name,--media - Необязательно:
--role-ids(повторяется)
Стикеры
-
sticker send- Каналы: Discord
- Обязательно:
--target,--sticker-id(повторяется) - Необязательно:
--message
-
sticker upload- Каналы: Discord
- Обязательно:
--guild-id,--sticker-name,--sticker-desc,--sticker-tags,--media
Роли / Каналы / Участники / Голос
role info(Discord):--guild-idrole add/role remove(Discord):--guild-id,--user-id,--role-idchannel info(Discord):--targetchannel list(Discord):--guild-idmember info(Discord/Slack):--user-id(+--guild-idдля Discord)voice status(Discord):--guild-id,--user-id
События
event list(Discord):--guild-idevent create(Discord):--guild-id,--event-name,--start-time- Необязательно:
--end-time,--desc,--channel-id,--location,--event-type
- Необязательно:
Модерация (Discord)
timeout:--guild-id,--user-id(необязательно--duration-minили--until; опустите оба параметра, чтобы снять тайм-аут)kick:--guild-id,--user-id(+--reason)ban:--guild-id,--user-id(+--delete-days,--reason)timeoutтакже поддерживает--reason
Рассылка
broadcast- Каналы: любой настроенный канал; используйте
--channel all, чтобы выбрать все провайдеры - Обязательно:
--targets <target...> - Необязательно:
--message,--media,--dry-run
- Каналы: любой настроенный канал; используйте
Примеры
Отправить ответ в Discord:
openclaw message send --channel discord \ --target channel:123 --message "hi" --reply-to 456Отправить сообщение с семантическими кнопками:
openclaw message send --channel discord \ --target channel:123 --message "Choose:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Approve","value":"approve","style":"success"},{"label":"Decline","value":"decline","style":"danger"}]}]}'Core отображает тот же payload presentation в компоненты Discord, блоки Slack, встроенные кнопки Telegram, свойства Mattermost или карточки Teams/Feishu в зависимости от возможностей канала. Полный контракт и правила fallback см. в разделе Представление сообщений.
Отправить более насыщенный payload представления:
openclaw message send --channel googlechat --target spaces/AAA... \ --message "Choose:" \ --presentation '{"title":"Deploy approval","tone":"warning","blocks":[{"type":"text","text":"Choose a path"},{"type":"buttons","buttons":[{"label":"Approve","value":"approve"},{"label":"Decline","value":"decline"}]}]}'Создать опрос в Discord:
openclaw message poll --channel discord \ --target channel:123 \ --poll-question "Snack?" \ --poll-option Pizza --poll-option Sushi \ --poll-multi --poll-duration-hours 48Создать опрос в Telegram (автоматическое закрытие через 2 минуты):
openclaw message poll --channel telegram \ --target @mychat \ --poll-question "Lunch?" \ --poll-option Pizza --poll-option Sushi \ --poll-duration-seconds 120 --silentОтправить проактивное сообщение Teams:
openclaw message send --channel msteams \ --target conversation:19:abc@thread.tacv2 --message "hi"Создать опрос Teams:
openclaw message poll --channel msteams \ --target conversation:19:abc@thread.tacv2 \ --poll-question "Lunch?" \ --poll-option Pizza --poll-option SushiПоставить реакцию в Slack:
openclaw message react --channel slack \ --target C123 --message-id 456 --emoji "✅"Поставить реакцию в группе Signal:
openclaw message react --channel signal \ --target signal:group:abc123 --message-id 1737630212345 \ --emoji "✅" --target-author-uuid 123e4567-e89b-12d3-a456-426614174000Отправить встроенные кнопки Telegram через универсальное представление:
openclaw message send --channel telegram --target @mychat --message "Choose:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Yes","value":"cmd:yes"},{"label":"No","value":"cmd:no"}]}]}'Отправить кнопку Telegram Mini App через универсальное представление:
openclaw message send --channel telegram --target 123456789 --message "Open app:" \ --presentation '{"blocks":[{"type":"buttons","buttons":[{"label":"Launch","webApp":{"url":"https://example.com/app"}}]}]}'Кнопки веб-приложений Telegram поддерживаются только в приватных чатах между пользователем и
ботом. Старые payload JSON с web_app по-прежнему разбираются, но webApp является
каноническим полем представления.
Отправить карточку Teams через универсальное представление:
openclaw message send --channel msteams \ --target conversation:19:abc@thread.tacv2 \ --presentation '{"title":"Status update","blocks":[{"type":"text","text":"Build completed"}]}'Отправить изображение Telegram или WhatsApp как документ, чтобы избежать сжатия:
openclaw message send --channel telegram --target @mychat \ --media ./diagram.png --force-document