设置
运行 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:
botapplications.commands
在出现的 Bot 权限 部分中,至少启用:
常规权限 - 查看频道
文本权限 - 发送消息 - 读取消息历史 - 嵌入链接 - 附加文件 - 添加表情(可选)
这是普通文本频道的基础。如果 bot 将在 Threads 中发帖——包括创建或继续一个 Thread 的论坛或媒体频道工作流——也请启用 在 Threads 中发送消息。
复制生成的 URL,在浏览器中打开,选择你的服务器,并点击 继续。bot 现在应该会出现在你的服务器中。
5. 启用开发者模式并收集你的 ID
在 Discord 应用中,启用开发者模式以便复制 ID:
- 用户设置(齿轮图标)→ 开发者 → 打开 开发者模式 (在移动设备上:应用设置 → 高级)
- 右键点击你的 服务器图标 → 复制服务器 ID
- 右键点击 你自己的头像 → 复制用户 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",
},
},
},
}
默认账户的环境变量回退:
对于脚本化或远程设置,使用 `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>"
如果 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. 将你的服务器添加到服务器允许列表
这可以让你的智能体在服务器上的任何频道中响应,而不仅仅是私聊。
2. 允许无需 @提及 即可响应
默认情况下,智能体仅在服务器频道中被 @提及时才会响应。在私有服务器上,你可能希望它对每条消息都进行响应。
在服务器频道中,普通回复默认会自动发布。对于共享的常驻房间,请启用 `messages.groupChat.visibleReplies: "message_tool"`,以便智能体可以保持静默,并只在它认为频道回复有用时才发布。这与最新一代、工具可靠性高的模型(例如 GPT-6 Astra)搭配效果最佳。除非工具发送,否则环境房间事件保持静默。完整的静默模式配置请参阅[环境房间事件](../ambient-room-events.md)。
如果 Discord 显示正在输入,且日志显示 token 使用量但没有已发布的消息,请检查该回合是否被配置为环境房间事件,或是否已选择 message-tool 可见回复。
会话繁忙通知也遵循此回复策略。对于环境事件和 message-tool 回复,Discord 会在 Gateway 日志中记录失败和被抑制的通知,而不会发布到房间。
3. 规划服务器频道中的记忆
长期记忆(MEMORY.md)仅在私聊会话中自动加载;服务器频道不会加载它。
"当我在 Discord 频道中提问时,如果你需要来自 MEMORY.md 的长期上下文,请使用 memory_search 或 memory_get。"
对于每个频道中的共享上下文,请将稳定的指令放在 AGENTS.md 或 USER.md 中(会为每个会话注入)。将长期笔记保存在 MEMORY.md 中,并使用记忆工具按需访问。
现在创建频道并开始聊天。智能体会看到频道名称,并且每个频道都是一个隔离的会话——设置 #coding、#home、#research 或任何适合你工作流的频道。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw