OpenClaw Discord 渠道
通过 discord.js Bot Gateway API 将 OpenClaw 连接到 Discord。在 Discord 开发者门户中创建机器人,启用所需的 Intent 权限,邀请机器人到你的服务器,AI 助手即可在 Discord 上运行。支持私信、服务器频道对话、表情回应、线程、斜杠命令和富媒体。是最容易设置的渠道之一。
Discord 支持的功能
文本消息
支持
媒体与文件
支持
消息反应
支持
消息线程
支持
语音消息
不支持
群聊
支持
Discord 前置条件
- 拥有 Discord 开发者门户访问权限的 Discord 账号
- Discord 开发者门户的 Bot Token(Applications → New Application → Bot)
- 在 Privileged Gateway Intents 中启用 Message Content Intent
- OpenClaw Gateway 已运行并配置
Discord 快速设置
创建 Discord 机器人并启用 Intent
前往 Discord 开发者门户(discord.com/developers),创建新应用,添加 Bot 用户并复制 Bot Token。在 Privileged Gateway Intents 中,启用 'Message Content Intent'(必需)和 'Server Members Intent'(推荐用于成员查询)。
添加 Discord 渠道配置
在 ~/.openclaw/openclaw.json 中添加 Discord 渠道配置。设置 token(或使用 DISCORD_BOT_TOKEN 环境变量),并配置 dm.policy 来控制谁可以私信机器人。
邀请机器人到服务器并测试
在开发者门户中,前往 OAuth2 → URL Generator。选择 scopes 'bot' 和 'applications.commands'。选择权限:View Channels、Send Messages、Read Message History、Embed Links、Attach Files、Add Reactions。打开生成的 URL 邀请机器人到你的服务器。发送 '@机器人名称 hello' 进行测试。
Discord 配置示例
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_DISCORD_BOT_TOKEN",
"dm": {
"policy": "pairing"
}
}
}
}Discord 深入了解
架构概述
创建你的机器人
私信策略
{
"channels": {
"discord": {
"dm": {
"policy": "pairing",
"allowFrom": ["123456789012345678"]
}
}
}
}服务器频道配置
{
"channels": {
"discord": {
"groupPolicy": "open",
"guilds": {
"YOUR_GUILD_ID": {
"slug": "my-server",
"requireMention": true,
"channels": {
"CHANNEL_ID": {
"allow": true,
"requireMention": false,
"systemPrompt": "You are a helpful assistant in this channel."
}
}
}
}
}
}
}表情回应与消息确认
{
"channels": {
"discord": {
"messages": {
"ackReaction": "👀",
"removeAckAfterReply": true
},
"guilds": {
"GUILD_ID": {
"reactionNotifications": "own"
}
}
}
}
}消息格式与分块
{
"channels": {
"discord": {
"textChunkLimit": 2000,
"chunkMode": "newline",
"historyLimit": 20
}
}
}斜杠命令与工具操作
媒体与文件处理
PluralKit 集成
{
"channels": {
"discord": {
"pluralkit": {
"enabled": true,
"token": "pk_live_..."
}
}
}
}执行审批(按钮 UI)
{
"channels": {
"discord": {
"execApprovals": {
"enabled": true,
"approvers": ["USER_ID_1", "USER_ID_2"],
"agentFilter": [],
"sessionFilter": []
}
}
}
}操作权限门控
白名单解析与匹配
Discord 配置参考
| Key | Type | Default | Description |
|---|---|---|---|
| enabled | boolean | true | 启用或禁用 Discord 渠道 |
| token | string | "" | Discord Bot Token。也可使用 DISCORD_BOT_TOKEN 环境变量 |
| dm.policy | string | "pairing" | 控制谁可以私信机器人。选项:pairing、allowlist、open、disabled |
| dm.allowFrom | string[] | [] | 允许私信机器人的 Discord 用户 ID(当 dm.policy 为 allowlist 时) |
| groupPolicy | string | "allowlist" | 服务器频道处理策略。选项:open、disabled、allowlist |
| guilds | object | {} | 按服务器 ID 索引的每服务器配置。包含 slug、users、channels、requireMention 等 |
| requireMention | boolean | true | 机器人在服务器频道中是否需要 @提及 才回复 |
| messages.ackReaction | string | "" | 处理消息时用于确认的表情回应 |
| messages.removeAckAfterReply | boolean | false | AI 回复后是否移除确认表情回应 |
| textChunkLimit | number | 2000 | 每个消息块的最大字符数(Discord 限制为 2000) |
| chunkMode | string | "length" | 长回复的分割方式。选项:length(硬字符限制)、newline(按段落分割) |
| historyLimit | number | 20 | 作为 AI 上下文包含的最近服务器消息数量 |
| mediaMaxMb | number | 8 | 媒体文件上传的最大大小(MB) |
| replyToMode | string | "off" | 回复线程模式。选项:off、first(仅首个块作为回复)、all(所有块都作为回复) |
| configWrites | boolean | true | 允许通过 Discord /config set|unset 命令发起的配置更新 |
| allowBots | boolean | false | 是否处理其他机器人的消息。请谨慎使用以避免循环 |
| retry.attempts | number | 3 | Discord API 调用失败时的重试次数 |
| retry.minDelayMs | number | 500 | 重试之间的最小延迟毫秒数 |
| retry.maxDelayMs | number | 30000 | 重试之间的最大延迟毫秒数 |
| retry.jitter | number | 0.1 | 应用于重试延迟的抖动因子 |
| dm.enabled | boolean | true | 是否接受私信 |
| dm.groupEnabled | boolean | false | 启用群组私信处理 |
| dm.groupChannels | string[] | [] | 群组私信频道白名单 |
| dmHistoryLimit | number | - | 每用户私信历史记录限制覆盖 |
| maxLinesPerMessage | number | 17 | 每条消息块的软行数限制 |
| commands.native | string | boolean | "auto" | 原生斜杠命令注册。选项:auto(Discord 默认启用)、true、false |
| commands.text | object | {} | 文本命令配置,要求独立的 /... 消息 |
| commands.useAccessGroups | boolean | false | 是否对命令执行访问组检查 |
| actions.* | boolean | varies | 工具操作权限门控。大部分默认启用;roles、moderation 和 presence 默认禁用 |
| pluralkit.enabled | boolean | false | 启用 PluralKit 代理消息解析 |
启用或禁用 Discord 渠道
Discord Bot Token。也可使用 DISCORD_BOT_TOKEN 环境变量
控制谁可以私信机器人。选项:pairing、allowlist、open、disabled
允许私信机器人的 Discord 用户 ID(当 dm.policy 为 allowlist 时)
服务器频道处理策略。选项:open、disabled、allowlist
按服务器 ID 索引的每服务器配置。包含 slug、users、channels、requireMention 等
机器人在服务器频道中是否需要 @提及 才回复
处理消息时用于确认的表情回应
AI 回复后是否移除确认表情回应
每个消息块的最大字符数(Discord 限制为 2000)
长回复的分割方式。选项:length(硬字符限制)、newline(按段落分割)
作为 AI 上下文包含的最近服务器消息数量
媒体文件上传的最大大小(MB)
回复线程模式。选项:off、first(仅首个块作为回复)、all(所有块都作为回复)
允许通过 Discord /config set|unset 命令发起的配置更新
是否处理其他机器人的消息。请谨慎使用以避免循环
Discord API 调用失败时的重试次数
重试之间的最小延迟毫秒数
重试之间的最大延迟毫秒数
应用于重试延迟的抖动因子
是否接受私信
启用群组私信处理
群组私信频道白名单
每用户私信历史记录限制覆盖
每条消息块的软行数限制
原生斜杠命令注册。选项:auto(Discord 默认启用)、true、false
文本命令配置,要求独立的 /... 消息
是否对命令执行访问组检查
工具操作权限门控。大部分默认启用;roles、moderation 和 presence 默认禁用
启用 PluralKit 代理消息解析
Discord 常见问题
Discord 故障排查
Message Content Intent 未启用、机器人缺少频道权限,或提及要求配置不正确。
配置中可能禁用了私信处理,或配对审批仍在等待中。
机器人的 OAuth2 邀请 URL 中未包含 'applications.commands' scope。
触发了 Discord API 速率限制,或网关连接处于异常状态。
groupPolicy 默认值为 'allowlist',机器人只在明确配置的服务器/频道中响应。
execApprovals 未启用,或用户的 Discord ID 未列在 approvers 数组中。