引言

在 AI 助手与即时通讯工具的融合浪潮中,OpenClaw 与 Discord 的组合正成为技术爱好者和自动化工作者的利器。本文将基于实际配置经验,详细介绍如何从入门到精通,搭建一个功能完善的 OpenClaw-Discord 工作流。

一、基础配置

1.1 创建 Discord Bot

首先需要在 Discord Developer Portal 创建应用和 Bot:

  1. 访问 Discord Developer Portal
  2. 点击 New Application,命名为你的助手名称
  3. 进入 Bot 页面,设置用户名
  4. 关键步骤:启用 Privileged Gateway Intents
    • ✅ Message Content Intent(必须)
    • ✅ Server Members Intent(推荐)
    • ⭕ Presence Intent(可选)

1.2 生成邀请链接并授权

在 OAuth2 URL Generator 中选择:

  • Scopes: bot, applications.commands
  • Bot Permissions:
    • View Channels
    • Send Messages
    • Read Message History
    • Embed Links
    • Attach Files
    • Add Reactions

复制生成的 URL,在浏览器中打开并选择要添加的服务器。

1.3 OpenClaw 配置

设置 Bot Token(在运行 OpenClaw 的机器上执行):

openclaw config set channels.discord.token '"YOUR_BOT_TOKEN"' --json
openclaw config set channels.discord.enabled true --json
openclaw gateway restart

1.4 配对流程

首次使用需要进行配对验证:

  1. 在 Discord 中给 Bot 发送私信
  2. Bot 会回复一个配对码
  3. 在 OpenClaw 主会话中发送:Approve this Discord pairing code: <CODE>
  4. 或在 CLI 中执行:openclaw pairing approve discord <CODE>

1.5 频道权限配置

编辑 ~/.openclaw/openclaw.json

{
  "channels": {
    "discord": {
      "enabled": true,
      "token": "YOUR_BOT_TOKEN",
      "groupPolicy": "allowlist",
      "guilds": {
        "YOUR_GUILD_ID": {
          "requireMention": false,
          "channels": {
            "CHANNEL_ID_1": { "allow": true },
            "CHANNEL_ID_2": { "allow": true }
          }
        }
      }
    }
  }
}

常见坑点:频道 ID 必须是文本频道(type: 0),不能是频道分类(type: 4)。

二、进阶配置

2.1 交互组件配置(Components v2)

OpenClaw 支持 Discord Components v2,可以发送丰富的交互式消息:

按钮示例

{
  "channel": "discord",
  "action": "send",
  "to": "channel:1234567890",
  "components": {
    "reusable": true,
    "text": "请选择一个操作",
    "blocks": [
      {
        "type": "actions",
        "buttons": [
          {
            "label": "✅ 确认",
            "style": "success",
            "customId": "btn_confirm"
          },
          {
            "label": "❌ 取消",
            "style": "danger",
            "customId": "btn_cancel"
          },
          {
            "label": "🔗 打开链接",
            "style": "primary",
            "url": "https://example.com"
          }
        ]
      }
    ]
  }
}

选择菜单示例

{
  "type": "actions",
  "select": {
    "type": "string",
    "placeholder": "请选择一个选项",
    "options": [
      { "label": "选项 A", "value": "option_a" },
      { "label": "选项 B", "value": "option_b" }
    ]
  }
}

按钮样式说明

  • primary - 蓝色,主要操作
  • secondary - 灰色,次要操作
  • success - 绿色,确认/成功
  • danger - 红色,危险/删除

2.2 权限控制

可以限制特定用户才能点击按钮:

{
  "label": "管理员操作",
  "style": "danger",
  "allowedUsers": ["USER_ID_1", "USER_ID_2"]
}

三、OpenClaw 对 Discord 的支持特性

消息与频道

  • 文字消息:支持 Markdown 格式化、链接、代码块、引用
  • 多媒体消息:图片、文件附件、语音消息(OGG/Opus 格式,带波形预览)
  • 频道类型:文本频道、DM(私信)、线程(Thread)
  • 回复功能:原生消息回复、引用、回复标签 [[reply_to_*]]

交互组件

  • 按钮(Buttons):primary/secondary/success/danger 四种样式、自定义 ID、URL 链接按钮
  • 选择菜单(Select Menus):字符串、用户、角色、频道、提及对象五种类型
  • 容器(Containers):复杂布局组合、文本块、分隔线、媒体库
  • 表单弹窗(Modals):文本输入、下拉选择、单选、复选框
  • 投票(Polls):原生 Discord 投票组件

交互控制

  • 可复用组件components.reusable 允许按钮多次点击
  • 用户限制allowedUsers 精细控制按钮访问权限
  • 执行审批(Exec Approvals):按钮式命令确认流程

命令与状态

  • Slash Commands:斜杠命令支持、自动补全、结构化输入
  • Presence 状态:在线状态设置、自定义活动(playing/streaming/listening/watching)
  • 表情反应(Reactions):消息表情添加、读取、统计

权限与安全

  • 权限框架groupPolicy(allowlist/open/disabled)、频道级与用户级权限
  • 信任发送者检查:moderation 操作(timeout/kick/ban)的权限验证
  • DM 策略:pairing/allowlist/open/disabled 多种模式
  • 角色路由:基于 Discord 角色的 Agent 绑定与路由

四、Discord + OpenClaw 的配合优势

4.1 工作流自动化

Discord 可以作为各种自动化任务的消息推送渠道:

  • 定时简报:每天早上自动推送新闻摘要、待办事项
  • 数据监控:股票、服务器状态等数据定时汇报
  • 事件触发:特定条件满足时发送通知(如网站开放注册、价格变动等)
  • 异常告警:系统错误、服务宕机时立即通知

4.2 多频道分工配置

根据工作流需求,可以设置不同频道用于不同用途:

"channels": {
  "CHANNEL_ID_1": { "allow": true },  // #综合 - 日常交流、告警通知
  "CHANNEL_ID_2": { "allow": true },  // #每日摘要 - 定时简报
  "CHANNEL_ID_3": { "allow": true }   // #数据分析 - 报告推送
}
频道类型建议用途消息特点
综合频道日常交流、告警通知高优先级、需要即时响应
摘要频道定时简报、待办提醒规律性、结构化的日报
数据频道分析报告、监控数据数据可视化、图表
归档频道历史记录、日志低频查阅、长期存储

4.3 交互式 AI 助手

相比传统的单向推送,OpenClaw + Discord 支持:

  • 即时响应:用户 @提及 Bot 即可获得 AI 回复
  • 交互操作:通过按钮执行确认、取消等操作
  • 表单收集:通过 Modal 收集用户输入
  • 投票决策:在频道内发起投票并自动统计

4.4 跨平台协同

OpenClaw 支持多通道同时接入,可以实现:

  • 同一 AI 助手在 Discord、Telegram、Slack 同时响应
  • 不同平台的消息可以共享上下文(通过 session 关联)
  • 灵活的绑定策略,按角色、频道、用户路由到不同 Agent

五、常见问题与解决方案

5.1 Bot 能看到服务器但发不了消息

原因:频道 ID 配置错误,可能是频道分类 ID 而非文本频道 ID

解决

# 获取正确的频道列表
curl -H "Authorization: Bot YOUR_TOKEN" \
  https://discord.com/api/v10/guilds/GUILD_ID/channels

确认 type 为 0(文本频道)而不是 4(频道分类)。

5.2 按钮交互报错 “row.serialize is not a function”

原因:使用了原始 Discord API JSON 格式,而非 OpenClaw Components v2 格式

解决:使用正确的格式:

{
  "components": {
    "reusable": true,
    "blocks": [...]
  }
}

5.3 定时任务推送失败

原因:缺少 delivery.targets 配置,或频道不在 allowlist 中

解决:检查任务配置和频道权限配置,确保频道已添加到 channels.discord.guilds...channels 中。

六、总结与展望

OpenClaw 与 Discord 的深度集成,为个人自动化工作流提供了强大的基础设施。从基础的消息推送,到复杂的交互式组件,再到多 Agent 协作,这个组合正在重新定义"个人 AI 助手"的可能性。

未来可期

  • Discord 即将推出的 Activities 和嵌入式应用
  • OpenClaw 计划中的多模态支持(图像、音频分析)
  • 更智能的上下文管理和长期记忆

对于技术爱好者来说,现在正是搭建个人 AI 工作流的最佳时机。


参考链接

本文配置环境

  • OpenClaw: 2026.2.21-2
  • Discord API: v10