Discord

将 OpenClaw Agent 接入 Discord 频道,在开发者社区、游戏团队和技术讨论群组中实现智能化互动与协作。

概述

Discord 是 OpenClaw 支持的主流 IM 渠道之一,特别适合开发者社区、游戏团队和技术讨论群组。通过接入 Discord,您可以在熟悉的社交环境中与 OpenClaw Agent 进行交互,实现智能化的社区管理和协作。

前置准备

在开始配置之前,请确保:

  • 已完成 OpenClaw 的基础安装(npm install -g openclaw@latest)。
  • 已完成初始化配置(openclaw onboard --install-daemon)。
  • 拥有 Discord 账号,并具有在目标 Server (服务器) 创建应用或添加机器人的权限。

接入配置步骤

1. 创建 Discord 应用

访问 Discord 开发者平台:https://discord.com/developers/applications

  1. 点击右上角「New Application」按钮。
  2. 输入应用名称(建议命名为「OpenClaw」)。
  3. 同意服务条款并创建应用。

2. 配置 Bot 设置

在应用管理页面的左侧菜单中,进入「Bot」标签页:

2.1 添加机器人实体

点击「Add Bot」按钮,并确认将机器人关联到当前应用。

2.2 开启特权网关意图 (Privileged Gateway Intents)

开启以下必要配置项,以确保机器人能正常获取关键状态信息:

  • Presence Intent:允许 Bot 查看用户的在线状态。
  • Server Members Intent:允许 Bot 访问服务器成员列表信息。
  • Message Content Intent:允许 Bot 读取频道内的消息内容(关键权限,必须开启!)。

2.3 获取并保存 Bot Token

  1. 在「Bot」页面中找到「Token」区域。
  2. 点击「Reset Token」生成新的访问令牌。
  3. 复制并妥善保存该 Token。**请注意:**Token 是访问您的机器人的唯一凭证,切勿泄露或将其提交到公开的代码仓库。

3. 配置 OAuth2 权限范围

在左侧导航栏中,进入「OAuth2」-「URL Generator」标签页:

3.1 选择 Scopes

勾选以下权限范围:

  • bot:核心的基础机器人权限。
  • applications.commands:允许机器人注册和支持斜杠命令(/ commands)。

3.2 赋予 Bot 权限 (Bot Permissions)

勾选机器人所需的具体操作权限:

文字频道权限 (Text Permissions):

  • Send Messages (发送消息)
  • Send Messages in Threads (在帖内发送消息)
  • Embed Links (嵌入链接预览)
  • Attach Files (发送文件附件)
  • Read Message History (读取历史消息上下文)
  • Add Reactions (添加表情表态)
  • Use External Emojis (使用自定义/外部表情)

通用权限 (General Permissions):

  • View Channels (允许查看和访问频道)

3.3 生成邀请链接获取地址

完成上述勾选后,页面底部会自动生成一段完整的邀请 URL,请复制此链接。

4. 邀请机器人加入您的服务器

  1. 将上一步复制的 OAuth2 URL 粘贴到浏览器地址栏并访问。
  2. 在弹出的授权页面下拉列表中,选择您希望机器人加入的目标 Server。
  3. 点击继续,核对权限后点击「授权」。
  4. 完成人机验证后,Bot 就会出现在目标服务器的在线成员列表中。

5. 在 OpenClaw 中配置 Discord 渠道

在终端执行以下命令,向系统中拉起并添加 Discord 渠道配置:

openclaw channels add

按照交互式引导完成配置:

  1. 在渠道列表中选择「Discord(Bot API)」。
  2. 输入在步骤 2.3 中获取的 Bot Token
  3. 选择频道的安全监听策略:
    • Open:无差别响应能够访问到的所有频道消息(推荐仅在内部测试环境使用)。
    • Allowlist:仅响应配置在白名单内的指定频道(生产环境强烈推荐)。
  4. 选择「Finished」确认写入并完成配置。

配置完成后,可以在 Web 控制台(openclaw dashboard)的 Channels 页面确认 Discord 渠道运行状态为「Running」。

6. 验证功能

在机器人已加入的任意频道内:

  1. @提及 OpenClaw 机器人。
  2. 发送测试问询消息,例如:@OpenClaw 你好,请介绍一下你自己。
  3. 机器人能正常回复,即表示双向通信接入成功。

高级精细化配置

频道白名单管控 (Allowlist)

当全局策略设为 Allowlist 时,您可以通过本地配置文件进行细粒度的访问授权控制:

{
  "channels": {
    "discord": {
      "enabled": true,
      "groupPolicy": "allowlist",
      "accounts": {
        "main": {
          "token": "${DISCORD_BOT_TOKEN}",
          "guilds": {
            "${SERVER_ID}": {
              "requireMention": true,
              "channels": {
                "${CHANNEL_ID}": {
                  "allow": true
                }
              }
            }
          }
        }
      }
    }
  }
}

配置项解析:

  • requireMention:设置为 true 时,机器人强制仅响应艾特 @ 自己的指令消息,避免无用打扰。
  • guilds:指定 Discord Server(服务器 ID)的策略节点。
  • channels:针对特定频道 ID 设置权限开关(allow: true)。

多 Agent 身份映射分工

Discord 渠道允许在同一个 Server 中驻扎多个不同的 Bot 实体,每个 Bot 后方各自绑定特定的领域 Agent。

第一步:建立多个后台 Agent 角色

openclaw agents add coder    # 注册专业负责代码架构审计的 Agent
openclaw agents add support  # 注册负责日常问答与技术支持的 Agent

第二步:为不同身份配置专属路由

在您的整体路由配置文件中,通过指定 accountId 来将不同的流量倒排给不同的心智节点:

{
  "bindings": [
    {
      "agentId": "coder",
      "match": {
        "channel": "discord",
        "accountId": "coder",     // 使用 Coder Bot 的访问流量
        "channelId": "${DEV_CHANNEL_ID}" // 限制在研发板块发声
      }
    },
    {
      "agentId": "support",
      "match": {
        "channel": "discord",
        "accountId": "support",   // 使用 Support Bot 的访问流量
        "channelId": "${SUPPORT_CHANNEL_ID}" // 圈定在求助答疑板块
      }
    }
  ]
}

典型应用场景与能力集成

场景 1:开发者社区助教

在交流群中,OpenClaw 可承担社区维护职责:

  • 解答新成员提出的框架入门和技术支持问题。
  • 自动化输出优质的代码片段示例并协助查找 Bug 报错。
  • 分发 API 规范和前沿技术文档资料链接。

场景 2:连接 GitHub 生态实现闭环

通过外借 OpenClaw Skills 插件网络:

@OpenClaw 帮我审查这个项目的 PR 合并请求:https://github.com/user/repo/pull/123 OpenClaw 收取指令后,将切入 GitHub 拉取变更差异代码并在 Discord 频道内直接输出 Review 意见。

场景 3:触发时间轴与订阅流推送

利用内置的心跳引擎 (Heartbeat),您可以配置各类长效定时服务:

  • 每晨定时摘要推送 Hacker News / Reddit 技术热门贴。
  • 定向通知基础设施巡查情况和云告警状态。

优化与管控机制

并发防雪崩与限流降压

如果您的 Server 极其活跃,可以通过限流策略保护机器人免遭异常高频滥炸:

{
  "channels": {
    "discord": {
      "rateLimit": {
        "maxRequests": 10,  // 最大突发限制阈值
        "windowMs": 60000   // 计算时间窗口(毫秒)
      }
    }
  }
}

控制触发规则屏蔽噪音

过滤系统机器人或特定的命令符号,可以极大降低处理开支:

{
  "channels": {
    "discord": {
      "requireMention": true,          // 仅响应明确提问
      "allowBots": false,              // 拒绝响应其他 Discord Bot 的消息,防止机器死循环聊天
      "ignorePrefix": ["!", "/"]       // 忽略传统指令格式以防串扰
    }
  }
}

常见排障指南

Q: 机器人显示在线,但没有任何回复或者日志未捕获到输入?

确认「意图权限 (Intents)」是否开启: 这是最高频错误点。Discord 官方要求必须在应用控制台的 Bot 页面,手动将 Message Content Intent 等三项特权权限的开关切换到绿色 ON 状态。否则您的机器人无法“看”到别人发言了什么,继而无法触发逻辑。

Q: 如何获取 Discord Server ID 和 Channel ID 等关键标识?

  1. 在 Discord 客户端:打开「用户设置」-「高级 (Advanced)」。
  2. 开启「开发者模式 (Developer Mode)」开关。
  3. 回到界面,直接右击您想要获取参数的服务器头像、频道文字名或用户头像,在弹出的菜单底部即可找到「复制 ID」选项。

Q: 使用集群时,多个官方/第三方机器人会不会相互发生答复串扰冲突?

如果不做配置,确实有可能。请确保在配置文件渠道下加入 "allowBots": false,阻止 OpenClaw 理会其余 Bot 发出的信号。此外,建议针对不同板块使用 allowlist 只允许在特定专门子板块里艾特它。


延申参考资料

On this page