openclaw message
統一的對外訊息傳送指令,支援訊息發送與頻道操作 (Discord/Google Chat/Slack/Mattermost(外掛)/Telegram/WhatsApp/Signal/iMessage/MS Teams)。
用法
openclaw message <subcommand> [flags]
頻道選擇:
--channel:當設定了多個頻道時為必填。- 若只設定了一個頻道,會自動作為預設值。
- 可用值:
whatsapp|telegram|discord|googlechat|slack|mattermost|signal|imessage|msteams(Mattermost 需要外掛)
目標格式(--target):
- WhatsApp:E.164 格式或群組 JID
- Telegram:聊天 ID 或
@username - Discord:
channel:<id>或user:<id>(或<@id>提及;純數字 ID 視為頻道) - Google Chat:
spaces/<spaceId>或users/<userId> - Slack:
channel:<id>或user:<id>(也接受原始頻道 ID) - Mattermost(外掛):
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> - MS Teams:對話 ID(
19:[email protected])或conversation:<id>或user:<aad-object-id>
名稱查詢:
- 支援名稱查詢的提供者(Discord/Slack 等),可使用頻道名稱如
Help或#help,透過目錄快取進行解析。 - 若快取未命中,且提供者支援的話,OpenClaw 會嘗試即時目錄查詢。
通用旗標
--channel <name>--account <id>--target <dest>(傳送/投票/讀取等操作的目標頻道或使用者)--targets <name>(可重複;僅限廣播)--json--dry-run--verbose
操作
核心功能
-
send- 頻道:WhatsApp/Telegram/Discord/Google Chat/Slack/Mattermost(外掛)/Signal/iMessage/MS Teams
- 必填:
--target,加上--message或--media - 選填:
--media、--reply-to、--thread-id、--gif-playback - 僅 Telegram:
--buttons(需設定channels.telegram.capabilities.inlineButtons以允許使用) - 僅 Telegram:
--thread-id(論壇主題 ID) - 僅 Slack:
--thread-id(討論串時間戳記;--reply-to使用相同欄位) - 僅 WhatsApp:
--gif-playback
-
poll- 頻道:WhatsApp/Telegram/Discord/Matrix/MS 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/Slack/Telegram/WhatsApp/Signal
- 必填:
--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
-
reactions- 頻道:Discord/Google Chat/Slack
- 必填:
--message-id、--target - 選填:
--limit
-
read- 頻道:Discord/Slack
- 必填:
--target - 選填:
--limit、--before、--after - 僅 Discord:
--around
-
edit- 頻道:Discord/Slack
- 必填:
--message-id、--message、--target
-
delete- 頻道:Discord/Slack/Telegram
- 必填:
--message-id、--target
-
pin/unpin- 頻道:Discord/Slack
- 必填:
--message-id、--target
-
pins(列表)- 頻道:Discord/Slack
- 必填:
--target
-
permissions- 頻道:Discord
- 必填:
--target
-
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(Discord 需額外提供--guild-id)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(可重複) - 選填:
--message、--media、--dry-run
- 頻道:任何已設定的頻道;使用
範例
在 Discord 回覆訊息:
openclaw message send --channel discord \
--target channel:123 --message "hi" --reply-to 456
傳送帶有互動元件的 Discord 訊息:
openclaw message send --channel discord \
--target channel:123 --message "Choose:" \
--components '{"text":"Choose a path","blocks":[{"type":"actions","buttons":[{"label":"Approve","style":"success"},{"label":"Decline","style":"danger"}]}]}'
完整結構描述請參閱 Discord components。
建立 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:[email protected] --message "hi"
建立 Teams 投票:
openclaw message poll --channel msteams \
--target conversation:19:[email protected] \
--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:" \
--buttons '[ [{"text":"Yes","callback_data":"cmd:yes"}], [{"text":"No","callback_data":"cmd:no"}] ]'