Skip to content

Discord(Bot API)

状态:生产就绪,通过官方 Discord Gateway 支持服务器频道和私信。

快速配置

步骤 1:创建 Discord 应用和 Bot

访问 Discord 开发者门户,点击 New Application,命名为"OpenClaw"之类的名字。

点击侧边栏的 Bot,设置 Bot 的用户名。

步骤 2:启用特权意图(Privileged Intents)

Bot 页面,滚动到 Privileged Gateway Intents,启用:

  • Message Content Intent(必须)
  • Server Members Intent(推荐;角色白名单和名字匹配需要)
  • Presence Intent(可选;仅在需要 presence 更新时)

步骤 3:复制 Bot Token

Bot 页面点击 Reset Token(尽管名字是"Reset",但这是第一次生成 Token,不会覆盖任何东西)。

复制 Token 并妥善保存。

步骤 4:生成邀请 URL 并加入服务器

点击侧边栏 OAuth2OAuth2 URL Generator,勾选:

  • bot
  • applications.commands

Bot Permissions 部分勾选:

  • View Channels
  • Send Messages
  • Read Message History
  • Embed Links
  • Attach Files
  • Add Reactions(可选)

复制生成的 URL,粘贴到浏览器,选择你的服务器,点击 Continue 添加 Bot。

步骤 5:开启开发者模式,收集 ID

在 Discord 客户端:用户设置进阶 → 开启 开发者模式

然后:

  • 右键点击服务器图标 → 复制服务器 ID
  • 右键点击自己的头像 → 复制用户 ID

保存 服务器 ID用户 ID,与 Bot Token 一起备用。

步骤 6:设置 Bot Token(不要在聊天中发送)

Bot Token 是密钥(类似密码),在运行 OpenClaw 的机器上设置:

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

如果 Gateway 已作为后台服务运行:openclaw gateway restart

步骤 7:配置 OpenClaw 并配对

通过配置文件:

json5
{
  channels: {
    discord: {
      enabled: true,
      token: "YOUR_BOT_TOKEN",
    },
  },
}

环境变量备选(仅默认账户):DISCORD_BOT_TOKEN=...

步骤 8:审批第一条私信配对

等 Gateway 启动后,在 Discord 中给你的 Bot 发私信,Bot 会回复配对码。

bash
openclaw pairing list discord
openclaw pairing approve discord <CODE>

配对码有效期 1 小时。

设置服务器工作区(推荐)

私信配对成功后,可以让服务器的每个频道都有自己独立的 Agent 会话。

将服务器加入频道白名单

json5
{
  channels: {
    discord: {
      groupPolicy: "allowlist",
      guilds: {
        "YOUR_SERVER_ID": {
          requireMention: true,
          users: ["YOUR_USER_ID"],
        },
      },
    },
  },
}

关闭私人服务器的 @mention 要求

json5
{
  channels: {
    discord: {
      guilds: {
        "YOUR_SERVER_ID": {
          requireMention: false,
        },
      },
    },
  },
}

完整配置示例

json5
{
  channels: {
    discord: {
      enabled: true,
      token: "YOUR_DISCORD_BOT_TOKEN",
      dm: { enabled: true, allowFrom: ["123456789012345678"] },
      guilds: {
        "123456789012345678": {
          slug: "my-server",
          requireMention: false,
          channels: {
            general: { allow: true },
            help: { allow: true, requireMention: true },
          },
        },
      },
    },
  },
}

访问控制

私信策略(dmPolicy)

  • pairing(默认):未知用户获得配对码
  • allowlist:只允许 dm.allowFrom 中的用户 ID
  • open:允许所有人
  • disabled:禁用私信

服务器(Guild)策略

  • groupPolicy: "allowlist"(默认):只允许配置了 guilds 的服务器
  • groupPolicy: "open":任何服务器均可

安全提示:Discord/Slack/Google Chat/MS Teams/Mattermost/IRC 默认通过 ID 授权发送者。只有明确接受风险时才启用 dangerouslyAllowNameMatching: true(按名字/昵称授权)。

斜杠命令

Discord 支持原生斜杠命令,OpenClaw 内置以下命令:

  • /focus/unfocus:绑定/解绑频道的 Agent 会话
  • /agents:查看可用 Agent
  • /session idle/session max-age:管理会话生命周期

详情参见斜杠命令文档