OpenClaw学习总结_II_频道系统_3:Discord集成详解
·
II. 频道系统 - 3. Discord
📍 课程位置
阶段:II. 频道系统
课序:第 3 课
前置知识:I. 核心架构(Gateway/Session/Tools)
后续课程:II-4. Slack
🎯 本课核心问题(你不懂我就这样教你)
Discord 接入经常踩这些坑:
- 我怎么创建 Discord Bot,并接到 OpenClaw?
- Bot 为什么收不到消息/发不出去?是不是权限没配对?
- 群里机器人为什么乱回?能不能必须 @ 才回?
- Discord 的 Thread/Slash 命令/权限模型跟其他平台有什么不同?
这一篇我们用“能跑通 + 安全可控 + 可排障”的方式讲清楚。
🧠 心智模型:Discord = 服务器(Guild)+ 频道(Channel)+ 权限(Permissions)
一句话:
Discord 的难点不在 token,而在 Bot 权限和事件订阅。
类比:
- Discord 服务器(Guild)像“公司”
- 频道(Channel)像“部门群”
- Bot 像“新员工”
- 你必须给它:
- 进门权限(invite + scopes)
- 说话权限(Send Messages)
- 看消息权限(Read Message History)
✅ 你要达到的结果(验收标准)
- 创建 Discord 应用并生成 Bot token
- 把 Bot 邀请进某个服务器(Guild)
- OpenClaw 能收到频道消息
- OpenClaw 能在频道里回复
- 配置 requireMention,避免乱回
🔧 第一步:创建 Discord Bot 并拿 Token
- 打开 Discord Developer Portal
- New Application
- 进入 Bot 页面,Create Bot
- 复制 Bot Token(注意保密)
🔧 第二步:把 Bot 邀请进服务器(最常见卡点)
你需要生成 Invite URL(OAuth2)。
必须要的 Scopes(常见)
bot- (如果你用 slash commands)
applications.commands
必须要的 Bot Permissions(最低可用)
- View Channels
- Send Messages
- Read Message History
如果你想让它在群里能 @ 人,还要:
- Mention Everyone(谨慎)
🔧 第三步:在 OpenClaw 配置启用 Discord
在 ~/.openclaw/openclaw.json:
{
channels: {
discord: {
enabled: true,
botToken: "YOUR_DISCORD_BOT_TOKEN",
// 安全策略
dmPolicy: "pairing", // pairing | allowlist | open | disabled
allowFrom: ["dc:123456789"], // 需要时才填
groupPolicy: "open"
}
}
}
重点:Discord 常见问题不是 dmPolicy,而是 bot 本身没权限/没进群。
🧩 群聊不乱回:必须 @ 才响应
Discord 原生支持 @mention,建议默认开启 requireMention。
{
agents: {
list: [
{
id: "main",
groupChat: {
mentionPatterns: ["@openclaw", "openclaw"],
},
},
],
}
}
这样你能控制:
- 只有别人 @ 你,Agent 才回答
- 避免机器人打断群聊
- 降低注入风险
🧵 Discord 的 Thread(线程)与会话绑定
Discord 很常用 Thread(话题线程)。
建议:
- 把 Thread 当成“独立会话”的承载
- 让不同线程不串上下文
你可以结合 session threadBindings 来实现更清晰的路由(不同版本字段略有差异,原则不变):
- thread = 一个 session
- thread idle/max-age = 自动清理
⚠️ Discord 最常见的坑(以及怎么排)
| 现象 | 常见原因 | 排查/解决 |
|---|---|---|
| Bot 不在线 | token 错/未启动/被禁用 | 看 gateway 日志;确认 token |
| 收不到消息 | 没开事件/权限不足 | 检查 bot 权限;确认能读频道 |
| 发不出去 | 没有 Send Messages 权限 | 给 bot 添加权限 |
| 群里乱回 | 没启用 requireMention | 开启 mention gating |
| 线程串上下文 | 线程绑定没开 | 开 threadBindings/按 thread 建 session |
📝 学习心得
Discord 的核心是“权限模型”。
很多人把时间花在“配置字段”上,但真正卡点往往是:
- 没把 bot 正确邀请进 guild
- bot 权限不够(看不到/发不了)
所以我推荐顺序:
- 先确保 bot 在 guild 里、能发能收
- 再加安全策略(requireMention、dmPolicy)
- 再谈高级能力(threads、slash commands)
✅ 本课总结(记住 5 句话)
- Discord 难点在 权限与邀请,不是 token。
- Invite URL 要包含正确 scopes(bot / applications.commands)。
- 机器人至少要有:View Channels / Send Messages / Read History。
- 群聊建议默认 requireMention,避免乱回。
- Thread 是天然的会话边界,用好 threadBindings 可以避免串线。
🔗 相关资源
- 官方文档:https://docs.openclaw.ai/channels/discord
- Discord 开发者门户:https://discord.com/developers/applications
- 配置参考:https://docs.openclaw.ai/gateway/configuration-reference
- 下一课:II-4. Slack
更多推荐
所有评论(0)