3.3 Discord
Discord 是游戏社区最流行的聊天平台,支持服务器、频道和私信。OpenClaw 可以通过机器人 API 与 Discord 无缝集成。
前置要求
- Discord 账号
- OpenClaw 已安装并完成初始配置
- (可选)有自己的服务器用于测试
创建 Discord 机器人
1. 创建 Discord 应用
- 打开 Discord 开发者门户
- 点击「New Application」,填写应用名称
- 在左侧菜单选择「Bot」
2. 添加机器人
点击「Add Bot」,然后:
- 复制 Token(这是你的机器人令牌)
- 点击「Reset Token」可以重置
⚠️ 注意:妥善保管 Token,就像密码一样。
3. 启用特权网关意图
在 Bot 页面,向下滚动到「Privileged Gateway Intents」,启用:
| 意图 | 说明 |
|---|---|
| Message Content Intent | 必须启用,用于读取消息内容 |
| Server Members Intent | 推荐启用,用于成员查找和允许列表 |
如果不启用 Message Content Intent,机器人会看到"Used disallowed intents"错误。
4. 生成邀请链接
- 在左侧菜单选择「OAuth2」→「URL Generator」
- 在 Scopes 中勾选:
- ✅
bot - ✅
applications.commands(原生命令需要)
- ✅
- 在 Bot Permissions 中勾选(最小权限):
- ✅ View Channels
- ✅ Send Messages
- ✅ Read Message History
- ✅ Embed Links
- ✅ Attach Files
- ✅ Add Reactions(推荐)
- 复制生成的 URL,打开并选择你的服务器
配置 OpenClaw
方式一:命令行添加(推荐)
openclaw channels add
按照提示选择 Discord,输入 Bot Token 即可。
方式二:配置文件
编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_BOT_TOKEN"
}
}
}
方式三:环境变量
export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN"
配置服务器规则
基础配置示例
{
"channels": {
"discord": {
"dm": {
"enabled": true,
"policy": "pairing"
},
"guilds": {
"123456789012345678": {
"channels": {
"help": {
"allow": true,
"requireMention": true
}
}
}
}
}
}
}
详解
私信设置(dm)
| 选项 | 说明 |
|---|---|
dm.enabled | 是否启用私信功能 |
dm.policy | 访问策略:pairing / allowlist / open / disabled |
dm.allowFrom | 白名单用户列表 |
服务器设置(guilds)
{
"channels": {
"discord": {
"guilds": {
"服务器ID": {
"slug": "friends-of-openclaw", // 可选的友好名称
"requireMention": true, // 是否需要 @提及
"users": ["用户ID1", "用户名2"], // 用户白名单
"channels": {
"频道slug或ID": {
"allow": true,
"requireMention": false,
"users": ["用户ID"],
"skills": ["search", "docs"], // 限制可用的技能
"systemPrompt": "Keep answers short."
}
}
}
}
}
}
}
启动与测试
1. 启动网关
openclaw gateway
2. 验证状态
openclaw gateway status
openclaw channels status --probe
3. 发送测试消息
在服务器的频道中 @你的机器人:
@你的机器人 hello
获取 ID
启用开发者模式
Discord → 用户设置 → 高级 → 启用开发者模式
获取服务器 ID
右键服务器名称 → 复制服务器 ID
获取频道 ID
右键频道名称 → 复制频道 ID
获取用户 ID
右键用户名 → 复制用户 ID
访问控制
私聊策略
| 值 | 说明 |
|---|---|
pairing | 默认。陌生用户收到配对码 |
allowlist | 仅 allowFrom 列表中的用户 |
open | 允许所有人(需 allowFrom: ["*"]) |
disabled | 禁用私信 |
群组/服务器策略
| 值 | 说明 |
|---|---|
open | 允许所有人 |
allowlist | 仅 groupAllowFrom 中的用户 |
disabled | 禁用服务器消息 |
高级功能
表情反应
{
"channels": {
"discord": {
"actions": {
"reactions": true
}
}
}
}
回复线程
{
"channels": {
"discord": {
"replyToMode": "first" // off / first / all
}
}
}
消息分块
{
"channels": {
"discord": {
"textChunkLimit": 2000,
"maxLinesPerMessage": 17,
"chunkMode": "newline" // length 或 newline
}
}
}
PluralKit 支持
如果服务器使用 PluralKit(多成员系统):
{
"channels": {
"discord": {
"pluralkit": {
"enabled": true,
"token": "pk_live_xxx" // 可选,私有系统需要
}
}
}
}
执行审批(按钮 UI)
{
"channels": {
"discord": {
"execApprovals": {
"enabled": true,
"approvers": ["用户ID1", "用户ID2"]
}
}
}
}
常见问题
"Used disallowed intents"
在开发者门户中启用 Message Content Intent,然后重启网关。
机器人不响应服务器消息
- 检查机器人是否有权限(View Channels, Send Messages)
- 检查是否需要 @提及
- 检查服务器/频道是否在允许列表中
私信不工作
- 检查 dm.policy 是否正确
- 检查是否已完成配对
权限问题
运行诊断:
openclaw doctor
openclaw channels status --probe