跳转至

设置

运行 Discord 机器人所需的一切:创建应用、授予 intents、邀请它加入服务器、配对,并准备服务器工作区。

快速设置

创建一个带有 bot 的 Discord 应用,将 bot 添加到你的服务器,并与 OpenClaw 配对。如果可以,请使用私有服务器;如有需要,先创建一个(创建自己的 > 为我自己和我的朋友)。

1. 创建 Discord 应用和 bot

在 Discord 开发者门户 中,点击 新建应用 并命名(例如 "OpenClaw")。

在侧边栏打开 Bot,并将 用户名 设置为你 agent 的名称。

2. 启用特权意图

仍在 Bot 页面,在 特权网关意图 下启用:

  • Message Content Intent(普通服务器消息必需)
  • Server Members Intent(推荐;角色允许列表、名称到 ID 匹配以及频道受众访问组所需)
  • Presence Intent(可选;仅用于在线状态更新)

3. 复制你的 bot token

在 **Bot** 页面,点击 **重置 Token** 并复制 token。

Note

尽管名称如此,这会生成你的第一个 token——并没有在“重置”什么。

4. 生成邀请 URL 并将 bot 添加到你的服务器

在侧边栏打开 OAuth2。在 OAuth2 URL 生成器 中,启用以下 scopes:

  • bot
  • applications.commands

在出现的 Bot 权限 部分中,至少启用:

常规权限 - 查看频道

文本权限 - 发送消息 - 读取消息历史 - 嵌入链接 - 附加文件 - 添加表情(可选)

这是普通文本频道的基础。如果 bot 将在 Threads 中发帖——包括创建或继续一个 Thread 的论坛或媒体频道工作流——也请启用 在 Threads 中发送消息。

复制生成的 URL,在浏览器中打开,选择你的服务器,并点击 继续。bot 现在应该会出现在你的服务器中。

5. 启用开发者模式并收集你的 ID

在 Discord 应用中,启用开发者模式以便复制 ID:

  1. 用户设置(齿轮图标)→ 开发者 → 打开 开发者模式 (在移动设备上:应用设置 → 高级)
  2. 右键点击你的 服务器图标 → 复制服务器 ID
  3. 右键点击 你自己的头像 → 复制用户 ID

将服务器 ID 和用户 ID 与你的 bot token 放在一起;接下来你需要全部三个。

6. 允许来自服务器成员的 DM

为了让配对生效,Discord 必须允许 bot 向你发送 DM。右键点击你的 服务器图标 → 隐私设置 → 打开 直接消息。

如果你使用 Discord DM 与 OpenClaw 交互,请保持开启。如果你只使用服务器频道,可以在配对后关闭它。

7. 安全设置你的 bot token(不要在聊天中发送)

bot token 是机密。在向你的 agent 发送消息之前,请在运行 OpenClaw 的机器上设置它:
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
cat > discord.patch.json5 <<'JSON5'
{
  channels: {
    discord: {
      enabled: true,
      token: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" },
    },
  },
}
JSON5
openclaw config patch --file ./discord.patch.json5 --dry-run
openclaw config patch --file ./discord.patch.json5
openclaw gateway
如果 OpenClaw 已作为后台服务运行,请通过 OpenClaw Mac 应用重启,或停止并重启 `openclaw gateway run` 进程。
对于托管服务安装,请在已设置 `DISCORD_BOT_TOKEN` 的 shell 中运行 `openclaw gateway install`,或将变量存储在 `~/.openclaw/.env` 中,以便服务在重启后能够解析 env SecretRef。
如果你的主机被 Discord 的启动应用查找阻止或限流,请从开发者门户设置 application/client ID,以便启动时跳过该 REST 调用:默认账户使用 `channels.discord.applicationId`,或每个 bot 使用 `channels.discord.accounts.<accountId>.applicationId`。

8. 配置 OpenClaw 并配对

在现有渠道(例如 Telegram)中与你的 OpenClaw agent 聊天并告诉它。如果 Discord 是你的第一个渠道,请改用 CLI / 配置选项卡。

"我已经在配置中设置了我的 Discord bot token。请使用 User ID <user_id> 和 Server ID <server_id> 完成 Discord 设置。"

    基于文件的配置:
{
  channels: {
    discord: {
      enabled: true,
      token: {
        source: "env",
        provider: "default",
        id: "DISCORD_BOT_TOKEN",
      },
    },
  },
}
    默认账户的环境变量回退:
DISCORD_BOT_TOKEN=...
    对于脚本化或远程设置,使用 `openclaw config patch --file ./discord.patch.json5 --dry-run` 写入相同的 JSON5 块,然后不带 `--dry-run` 重新运行。明文 `token` 字符串也可以,并且 `channels.discord.token` 支持 SecretRef 值,适用于 env/file/exec/store 提供商。参见 [密钥管理](../../gateway/secrets.md)。

    对于多个 Discord 机器人,请将每个 bot token 和 application ID 放在其账户下。顶层 `channels.discord.applicationId` 会被账户继承,因此仅当所有账户使用相同的 application ID 时才在那里设置。
{
  channels: {
    discord: {
      enabled: true,
      accounts: {
        personal: {
          token: { source: "env", provider: "default", id: "DISCORD_PERSONAL_TOKEN" },
          applicationId: "111111111111111111",
        },
        work: {
          token: { source: "env", provider: "default", id: "DISCORD_WORK_TOKEN" },
          applicationId: "222222222222222222",
        },
      },
    },
  },
}

9. 批准首次 DM 配对

网关运行后,在 Discord 中 DM 你的 bot。它会回复一个配对码。

将配对码发送到你的现有渠道中的 agent:

"批准此 Discord 配对码:<CODE>"

openclaw pairing list discord
openclaw pairing approve discord <CODE>

配对码在 1 小时后过期。批准后,在 Discord 私聊中与你的智能体聊天。

如果 Discord 无法授予 Message Content Intent,OpenClaw 仍可在私聊以及 用户明确提及机器人的服务器频道中运行。设置 channels.discord.intents.messageContent: false,使 Gateway 不请求不可用的 特权意图,并在每个已配置的服务器频道上保持 requireMention: true。Discord 会省略其他服务器消息中用户创建的内容。

Note

Token 解析是账户感知的。配置中的 token 值优先于环境变量回退值,并且 DISCORD_BOT_TOKEN 仅用于默认账户。 如果两个已启用的 Discord 账户解析到同一个 bot token,OpenClaw 只为该 token 启动一个 gateway 监视器:来自配置的 token 优先于环境变量回退值;否则第一个已启用账户生效,重复账户会被报告为已禁用,原因为 duplicate bot token。 对于高级出站调用(message tool/频道操作),每次调用显式提供的 token 将用于该次调用。这适用于发送以及读取/探测类操作(read/search/fetch/thread/pins/permissions)。账户策略/重试设置仍来自活动运行时快照中选定的账户。

一旦私聊可用,你就可以将你的服务器变成一个完整的工作区,其中每个频道都有自己的智能体会话和独立上下文。推荐用于只有你和你的机器人的私有服务器。

1. 将你的服务器添加到服务器允许列表

这可以让你的智能体在服务器上的任何频道中响应,而不仅仅是私聊。

"将我的 Discord 服务器 ID <server_id> 添加到服务器允许列表"

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

2. 允许无需 @提及 即可响应

默认情况下,智能体仅在服务器频道中被 @提及时才会响应。在私有服务器上,你可能希望它对每条消息都进行响应。

在服务器频道中,普通回复默认会自动发布。对于共享的常驻房间,请启用 `messages.groupChat.visibleReplies: "message_tool"`,以便智能体可以保持静默,并只在它认为频道回复有用时才发布。这与最新一代、工具可靠性高的模型(例如 GPT-6 Astra)搭配效果最佳。除非工具发送,否则环境房间事件保持静默。完整的静默模式配置请参阅[环境房间事件](../ambient-room-events.md)。

如果 Discord 显示正在输入,且日志显示 token 使用量但没有已发布的消息,请检查该回合是否被配置为环境房间事件,或是否已选择 message-tool 可见回复。

会话繁忙通知也遵循此回复策略。对于环境事件和 message-tool 回复,Discord 会在 Gateway 日志中记录失败和被抑制的通知,而不会发布到房间。

"允许我的智能体在此服务器上无需被 @提及 即可响应"

    在你的服务器配置中设置 `requireMention: false`:
{
  channels: {
    discord: {
      guilds: {
        YOUR_SERVER_ID: {
          requireMention: false,
        },
      },
    },
  },
}
    如需要求可见的群组/频道回复必须通过 message-tool 发送,请设置 `messages.groupChat.visibleReplies: "message_tool"`。

3. 规划服务器频道中的记忆

长期记忆(MEMORY.md)仅在私聊会话中自动加载;服务器频道不会加载它。

"当我在 Discord 频道中提问时,如果你需要来自 MEMORY.md 的长期上下文,请使用 memory_search 或 memory_get。"

对于每个频道中的共享上下文,请将稳定的指令放在 AGENTS.md 或 USER.md 中(会为每个会话注入)。将长期笔记保存在 MEMORY.md 中,并使用记忆工具按需访问。

现在创建频道并开始聊天。智能体会看到频道名称,并且每个频道都是一个隔离的会话——设置 #coding、#home、#research 或任何适合你工作流的频道。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw