openclaw message
用于跨 Discord、Google Chat、iMessage、Matrix、Mattermost(插件)、Microsoft Teams、Signal、Slack、Telegram 和 WhatsApp 发送消息及执行渠道操作的统一出站命令。
渠道选择
- 如果配置了多个渠道,则必须指定
--channel <name>;如果只配置了一个渠道,则默认使用该渠道。 - 可选值:
discord|googlechat|imessage|matrix|mattermost|msteams|signal|slack|telegram|whatsapp(Mattermost 需要相应插件)。 - 带渠道前缀的目标(例如
discord:channel:123)无需显式指定--channel即可解析到所属插件。
目标格式(-t, --target)
渠道名称查找:对于具有目录的提供商(Discord/Slack 等),
Help 或 #help 等名称会通过目录缓存解析;如果缓存未命中且提供商支持实时目录查找,则回退到实时查找。
通用标志
每个操作都接受:--channel <name>、--account <id>、--json、--dry-run、--verbose。需要目标位置的操作还接受 -t, --target <dest>。
SecretRef 解析
openclaw message 会在运行操作前解析渠道 SecretRef,并将范围尽可能缩小:
- 设置
--channel时(或从带前缀的目标推断出渠道时)限定到渠道范围 - 同时设置
--account时限定到账户范围 - 两者均未设置时涵盖所有已配置渠道
操作
核心
发送
--media <path-or-url>:附加图片/音频/视频/文档(本地路径或 URL)。--presentation <json>:包含text、context、divider、chart、table、buttons和select块的共享有效载荷,根据各渠道的能力进行渲染。请参阅消息呈现。--delivery <json>:通用投递偏好,例如{"pin": true}。当渠道支持固定投递时,--pin是其简写形式。--reply-to <id>、--thread-id <id>(Telegram 论坛主题;Slack 线程时间戳,与--reply-to使用相同字段)。--force-document(Telegram、WhatsApp):将图片/GIF/视频作为文档发送,以避免渠道压缩。--silent(Telegram、Discord):发送时不触发通知。--gif-playback(仅限 WhatsApp):将视频媒体作为 GIF 播放。
webApp(仍会解析 web_app 以兼容旧版
JSON),并且仅在用户与 Bot 之间的私聊中渲染:
投票
--poll-option <choice>:重复 2-12 次。--poll-multi:允许多选。- Discord:
--poll-duration-hours、--silent、--message。 - Telegram:
--poll-duration-seconds <n>(5-600)、--silent、--poll-anonymous/--poll-public、--thread-id。
话题串
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(无额外标志)。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。
身份组、频道、语音和事件(Discord)
role info:--guild-id。role add/role remove:--guild-id、--user-id、--role-id。channel info:--target。channel list:--guild-id。voice status:--guild-id、--user-id。event list:--guild-id。event create:必需--guild-id、--event-name、--start-time; 可选--end-time、--desc、--channel-id、--location、--event-type、--image <url-or-path>。
管理操作(Discord)
timeout:--guild-id、--user-id;可选--duration-min或--until(两者均省略可清除超时)、--reason。kick:--guild-id、--user-id、--reason。ban:--guild-id、--user-id、--delete-days、--reason。
广播
--targets 接受以空格分隔的
列表。使用 --channel all 可将所有已配置的提供商设为目标。