跳到主要内容

3.3 Discord

Discord 是游戏社区最流行的聊天平台,支持服务器、频道和私信。OpenClaw 可以通过机器人 API 与 Discord 无缝集成。

前置要求

  • Discord 账号
  • OpenClaw 已安装并完成初始配置
  • (可选)有自己的服务器用于测试

创建 Discord 机器人

1. 创建 Discord 应用

  1. 打开 Discord 开发者门户
  2. 点击「New Application」,填写应用名称
  3. 在左侧菜单选择「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. 生成邀请链接

  1. 在左侧菜单选择「OAuth2」→「URL Generator」
  2. 在 Scopes 中勾选:
    • bot
    • applications.commands(原生命令需要)
  3. 在 Bot Permissions 中勾选(最小权限):
    • ✅ View Channels
    • ✅ Send Messages
    • ✅ Read Message History
    • ✅ Embed Links
    • ✅ Attach Files
    • ✅ Add Reactions(推荐)
  4. 复制生成的 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

下一步