OpenClaw Discord 配置指南

状态

通过官方 Discord 机器人网关为 DM 和公会文本频道就绪。

快速设置(初学者)

  • 创建 Discord 机器人并复制机器人令牌
  • 在 Discord 应用设置中,启用 Message Content Intent(如果计划使用允许列表或名称查找,还需 Server Members Intent)
  • 为 OpenClaw 设置令牌:
    • 环境变量: DISCORD_BOT_TOKEN=...
    • 或配置: channels.discord.token: "..."
  • 如果两者都设置,配置优先(环境回退仅用于默认账号)
  • 邀请机器人到您的服务器并授予消息权限(如果只需要 DM,创建私有服务器)
  • 启动网关
  • DM 访问默认是配对;首次联系时批准配对代码

最小配置:

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

目标

  • 通过 Discord DM 或公会频道与 OpenClaw 对话
  • 直接聊天折叠到代理的主会话(默认 agent:main:main);公会频道保持隔离为 agent::discord:channel:(显示名称使用 discord:#)
  • 默认忽略群组 DM;通过 channels.discord.dm.groupEnabled 启用,并通过 channels.discord.dm.groupChannels 可选限制
  • 保持路由确定性:回复始终返回到它们到达的频道

创建您自己的机器人

1) 创建 Discord 应用 + 机器人用户

  • Discord Developer Portal → Applications → New Application
  • 在您的应用中:
    • Bot → Add Bot
    • 复制 Bot Token(这是您放入 DISCORD_BOT_TOKEN 的内容)

2) 启用 OpenClaw 需要的网关意图

Discord 阻止”特权意图”,除非您显式启用它们。

在 Bot → Privileged Gateway Intents 中,启用:

  • Message Content Intent(必需以读取大多数公会中的消息文本;没有它您会看到 “Used disallowed intents” 或机器人将连接但不响应消息)
  • Server Members Intent(推荐;某些成员/用户查找和公会中的允许列表匹配需要)

您通常不需要 Presence Intent。

3) 生成邀请 URL(OAuth2 URL Generator)

在您的应用中:OAuth2 → URL Generator

Scopes

  • ✅ bot
  • ✅ applications.commands(原生命令必需)

Bot 权限(最小基线)

  • ✅ View Channels
  • ✅ Send Messages
  • ✅ Read Message History
  • ✅ ✅ Embed Links
  • ✅ Attach Files
  • ✅ Add Reactions(可选但推荐)
  • ✅ Use External Emojis / Stickers(可选;仅在需要时使用)

除非您正在调试并完全信任机器人,否则避免 Administrator。

复制生成的 URL,打开它,选择您的服务器,并安装机器人。

4) 获取 ID(公会/用户/频道)

Discord 到处使用数字 ID;OpenClaw 配置更喜欢 ID。

  • Discord(桌面/网页)→ User Settings → Advanced → 启用 Developer Mode
  • 右键点击:
    • 服务器名称 → Copy Server ID(公会 id)
    • 频道(例如 #help)→ Copy Channel ID
    • 您的用户 → Copy User ID

5) 配置 OpenClaw

令牌

通过环境变量设置机器人令牌(服务器上推荐):

DISCORD_BOT_TOKEN=...

或通过配置:

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

允许列表 + 频道路由

示例”单服务器,仅允许我,仅允许 #help”:

{
  "channels": {
    "discord": {
      "enabled": true,
      "dm": { "enabled": false },
      "guilds": {
        "YOUR_GUILD_ID": {
          "users": ["YOUR_USER_ID"],
          "requireMention": true,
          "channels": {
            "help": { "allow": true, "requireMention": true }
          }
        }
      }
    }
  }
}

能力和限制

  • DM 和公会文本频道(线程被视为单独频道;不支持语音)
  • 尽最大努力发送打字指示器;消息分块使用 channels.discord.textChunkLimit(默认 2000)并按行数分割(channels.discord.maxLinesPerMessage,默认 17)
  • 可选换行分块:设置 channels.discord.chunkMode="newline" 以在空白行(段落边界)处分割
  • 文件上传支持到配置的 channels.discord.mediaMaxMb(默认 8 MB)
  • 默认提及门控公会回复以避免嘈杂的机器人
  • 当消息引用另一条消息时注入回复上下文(引用内容 + ID)
  • 原生回复线程默认关闭;使用 channels.discord.replyToMode 和回复标签启用

配置参考

配置项 说明
channels.discord.enabled 启用/禁用
channels.discord.token 机器人令牌
channels.discord.dm.enabled 启用/禁用所有 DM
channels.discord.dm.policy pairing | allowlist | open | disabled
channels.discord.dm.allowFrom DM 允许列表
channels.discord.guilds 每个公会的规则
channels.discord.textChunkLimit 出站文本分块大小(字符)
channels.discord.mediaMaxMb 入站媒体大小上限

来源: https://docs.openclaw.ai/channels/discord

作者:十一张  创建时间:2026-03-08 22:33
最后编辑:十一张  更新时间:2026-03-28 11:55