为什么值得学

很多人把 OpenClaw 当成一个「只会回答的聊天机器人」,但它的 message 工具能在你配置好的频道里主动发消息、拉投票、表情回应、开话题线程

典型场景:

  • 凌晨定时任务跑完,自动把结果推到微信群 / Telegram,不用你起床看日志。
  • 想让读者决定下一篇写什么,直接在群里发个投票。
  • 收到重要消息,回个 👍 表示「已读」,比回一句「好的」省 token。
  • 把一段长讨论收进一个话题线程,频道首页不被刷屏。

下面全是真实可调用的参数形态,直接抄就能用。

工具能干哪些事

message 工具的核心动作(action)一览:

action 用途 必填字段
send 发文本/媒体消息 channel、target、message
poll 发起投票 channel、target、message、options
react 对一条消息加表情 channel、target、messageId、emoji
topic-create 开话题/线程 channel、target、message
topic-edit 改话题名 channel、target、topicId、message
edit 改自己发的消息 channel、target、messageId、message
delete 删自己发的消息 channel、target、messageId
poll 高级 匿名/多选/限时 pollAnonymous、pollMulti、pollDurationHours

说明:target 的取值随频道不同——Telegram 是 chat id 或 @username,Discord 是 <channelId\|user:ID\|channel:ID>,WhatsApp/Signal 是 E.164 手机号。这些值在你第一次连上频道时由 OpenClaw 记录,可直接问 AI「我的 Telegram 群 id 是多少」。

场景一:定时任务跑完自动推送

这是最实用的组合。把推送动作写进自动化任务的 payload,任务结束自然带结果出来。

发送给 Telegram 群组:

{
  "action": "send",
  "channel": "telegram",
  "target": "-1001234567890",
  "message": "✅ 每日发文已完成\n标题:OpenClaw 消息工具实战\nURL:https://zyker.cn/xxx"
}

发带图文的卡片(媒体 + 说明):

{
  "action": "send",
  "channel": "telegram",
  "target": "-1001234567890",
  "media": "/root/.openclaw/workspace/cover.png",
  "caption": "今日封面已生成"
}

要点:媒体用本地绝对路径或 URL 都可以;纯文本走 message,图片/文件走 media + caption。别在正文字段里塞图片路径,那会被当成文字发出去。

场景二:用投票收集选题

让读者替你决定写什么,比自己拍脑袋准。

{
  "action": "poll",
  "channel": "telegram",
  "target": "-1001234567890",
  "message": "下周想先出哪篇 OpenClaw 教程?",
  "options": ["子智能体进阶", "Token 成本优化", "微信接管实战"],
  "pollAnonymous": true,
  "pollDurationHours": 48
}

需要多选(比如「你最想学哪几样,可多选」):

{
  "action": "poll",
  "channel": "discord",
  "target": "C0XXXX:ID",
  "message": "你正在用 OpenClaw 做哪些事?(多选)",
  "options": ["定时任务", "写代码", "抓网页", "管群消息"],
  "pollMulti": true
}

投票结果要不要回流到对话:pollPublic: true 时投票人身份会进发起对话;pollAnonymous: true(默认)只统计票数、不暴露是谁投的。涉及敏感偏好时用匿名。

场景三:用表情做轻量确认

对方发了个链接,你只需「收到」,回文字浪费额度。直接加表情:

{
  "action": "react",
  "channel": "discord",
  "target": "C0XXXX:ID",
  "messageId": "123456789012345678",
  "emoji": "👍"
}

微信/企微等不支持原生 reaction 的频道,这步会静默跳过,不会报错——这是预期行为,不是失败。

场景四:话题线程整理长讨论

Telegram 话题群、Discord 线程都能开。把「9 月选题讨论」收进一个线程:

{
  "action": "topic-create",
  "channel": "telegram",
  "target": "-1001234567890",
  "message": "9月选题讨论"
}

后续发言把返回的 topicId 带进去即可,频道首页保持干净。

三个容易踩的坑

  1. 把图片塞进 message:图片永远走 media,文字说明走 caption。混用会导致图片发不出去或变成乱码路径。
  2. target 写错频道类型:Telegram 群是 -100 开头负数 id,私聊是正数 id;写反了会报「chat not found」。先发一条测试消息确认 id。
  3. 以为表情回应一定成功:非原生 reaction 频道会跳过,属正常。校验时别拿「有没有回执」当成败标准。

小结

message 工具把 OpenClaw 从「你问它答」变成「它主动找你」:定时推送结果、投票收集需求、表情轻确认、话题收讨论。配合同一个 automations 调度器,你就能搭出一条「跑任务 → 出结果 → 推群里 → 收反馈」的闭环,而全程不需要人盯着。

下一篇可以聊:如何把投票结果自动读回,变成第二天的发文选题——那是 conversations_* 工具的地盘。


扫码关注公众号,获取更多 OpenClaw 实操技巧:

公众号二维码