引言
在 AI 助手与即时通讯工具的融合浪潮中,OpenClaw 与 Discord 的组合正成为技术爱好者和自动化工作者的利器。本文将基于实际配置经验,详细介绍如何从入门到精通,搭建一个功能完善的 OpenClaw-Discord 工作流。
一、基础配置
1.1 创建 Discord Bot
首先需要在 Discord Developer Portal 创建应用和 Bot:
- 访问 Discord Developer Portal
- 点击 New Application,命名为你的助手名称
- 进入 Bot 页面,设置用户名
- 关键步骤:启用 Privileged Gateway Intents
- ✅ Message Content Intent(必须)
- ✅ Server Members Intent(推荐)
- ⭕ Presence Intent(可选)
1.2 生成邀请链接并授权
在 OAuth2 URL Generator 中选择:
- Scopes:
bot,applications.commands - Bot Permissions:
- View Channels
- Send Messages
- Read Message History
- Embed Links
- Attach Files
- Add Reactions
复制生成的 URL,在浏览器中打开并选择要添加的服务器。
1.3 OpenClaw 配置
设置 Bot Token(在运行 OpenClaw 的机器上执行):
openclaw config set channels.discord.token '"YOUR_BOT_TOKEN"' --json
openclaw config set channels.discord.enabled true --json
openclaw gateway restart
1.4 配对流程
首次使用需要进行配对验证:
- 在 Discord 中给 Bot 发送私信
- Bot 会回复一个配对码
- 在 OpenClaw 主会话中发送:
Approve this Discord pairing code: <CODE> - 或在 CLI 中执行:
openclaw pairing approve discord <CODE>
1.5 频道权限配置
编辑 ~/.openclaw/openclaw.json:
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"groupPolicy": "allowlist",
"guilds": {
"YOUR_GUILD_ID": {
"requireMention": false,
"channels": {
"CHANNEL_ID_1": { "allow": true },
"CHANNEL_ID_2": { "allow": true }
}
}
}
}
}
}
常见坑点:频道 ID 必须是文本频道(type: 0),不能是频道分类(type: 4)。
二、进阶配置
2.1 交互组件配置(Components v2)
OpenClaw 支持 Discord Components v2,可以发送丰富的交互式消息:
按钮示例:
{
"channel": "discord",
"action": "send",
"to": "channel:1234567890",
"components": {
"reusable": true,
"text": "请选择一个操作",
"blocks": [
{
"type": "actions",
"buttons": [
{
"label": "✅ 确认",
"style": "success",
"customId": "btn_confirm"
},
{
"label": "❌ 取消",
"style": "danger",
"customId": "btn_cancel"
},
{
"label": "🔗 打开链接",
"style": "primary",
"url": "https://example.com"
}
]
}
]
}
}
选择菜单示例:
{
"type": "actions",
"select": {
"type": "string",
"placeholder": "请选择一个选项",
"options": [
{ "label": "选项 A", "value": "option_a" },
{ "label": "选项 B", "value": "option_b" }
]
}
}
按钮样式说明:
primary- 蓝色,主要操作secondary- 灰色,次要操作success- 绿色,确认/成功danger- 红色,危险/删除
2.2 权限控制
可以限制特定用户才能点击按钮:
{
"label": "管理员操作",
"style": "danger",
"allowedUsers": ["USER_ID_1", "USER_ID_2"]
}
三、OpenClaw 对 Discord 的支持特性
消息与频道
- 文字消息:支持 Markdown 格式化、链接、代码块、引用
- 多媒体消息:图片、文件附件、语音消息(OGG/Opus 格式,带波形预览)
- 频道类型:文本频道、DM(私信)、线程(Thread)
- 回复功能:原生消息回复、引用、回复标签
[[reply_to_*]]
交互组件
- 按钮(Buttons):primary/secondary/success/danger 四种样式、自定义 ID、URL 链接按钮
- 选择菜单(Select Menus):字符串、用户、角色、频道、提及对象五种类型
- 容器(Containers):复杂布局组合、文本块、分隔线、媒体库
- 表单弹窗(Modals):文本输入、下拉选择、单选、复选框
- 投票(Polls):原生 Discord 投票组件
交互控制
- 可复用组件:
components.reusable允许按钮多次点击 - 用户限制:
allowedUsers精细控制按钮访问权限 - 执行审批(Exec Approvals):按钮式命令确认流程
命令与状态
- Slash Commands:斜杠命令支持、自动补全、结构化输入
- Presence 状态:在线状态设置、自定义活动(playing/streaming/listening/watching)
- 表情反应(Reactions):消息表情添加、读取、统计
权限与安全
- 权限框架:
groupPolicy(allowlist/open/disabled)、频道级与用户级权限 - 信任发送者检查:moderation 操作(timeout/kick/ban)的权限验证
- DM 策略:pairing/allowlist/open/disabled 多种模式
- 角色路由:基于 Discord 角色的 Agent 绑定与路由
四、Discord + OpenClaw 的配合优势
4.1 工作流自动化
Discord 可以作为各种自动化任务的消息推送渠道:
- 定时简报:每天早上自动推送新闻摘要、待办事项
- 数据监控:股票、服务器状态等数据定时汇报
- 事件触发:特定条件满足时发送通知(如网站开放注册、价格变动等)
- 异常告警:系统错误、服务宕机时立即通知
4.2 多频道分工配置
根据工作流需求,可以设置不同频道用于不同用途:
"channels": {
"CHANNEL_ID_1": { "allow": true }, // #综合 - 日常交流、告警通知
"CHANNEL_ID_2": { "allow": true }, // #每日摘要 - 定时简报
"CHANNEL_ID_3": { "allow": true } // #数据分析 - 报告推送
}
| 频道类型 | 建议用途 | 消息特点 |
|---|---|---|
| 综合频道 | 日常交流、告警通知 | 高优先级、需要即时响应 |
| 摘要频道 | 定时简报、待办提醒 | 规律性、结构化的日报 |
| 数据频道 | 分析报告、监控数据 | 数据可视化、图表 |
| 归档频道 | 历史记录、日志 | 低频查阅、长期存储 |
4.3 交互式 AI 助手
相比传统的单向推送,OpenClaw + Discord 支持:
- 即时响应:用户 @提及 Bot 即可获得 AI 回复
- 交互操作:通过按钮执行确认、取消等操作
- 表单收集:通过 Modal 收集用户输入
- 投票决策:在频道内发起投票并自动统计
4.4 跨平台协同
OpenClaw 支持多通道同时接入,可以实现:
- 同一 AI 助手在 Discord、Telegram、Slack 同时响应
- 不同平台的消息可以共享上下文(通过 session 关联)
- 灵活的绑定策略,按角色、频道、用户路由到不同 Agent
五、常见问题与解决方案
5.1 Bot 能看到服务器但发不了消息
原因:频道 ID 配置错误,可能是频道分类 ID 而非文本频道 ID
解决:
# 获取正确的频道列表
curl -H "Authorization: Bot YOUR_TOKEN" \
https://discord.com/api/v10/guilds/GUILD_ID/channels
确认 type 为 0(文本频道)而不是 4(频道分类)。
5.2 按钮交互报错 “row.serialize is not a function”
原因:使用了原始 Discord API JSON 格式,而非 OpenClaw Components v2 格式
解决:使用正确的格式:
{
"components": {
"reusable": true,
"blocks": [...]
}
}
5.3 定时任务推送失败
原因:缺少 delivery.targets 配置,或频道不在 allowlist 中
解决:检查任务配置和频道权限配置,确保频道已添加到 channels.discord.guilds...channels 中。
六、总结与展望
OpenClaw 与 Discord 的深度集成,为个人自动化工作流提供了强大的基础设施。从基础的消息推送,到复杂的交互式组件,再到多 Agent 协作,这个组合正在重新定义"个人 AI 助手"的可能性。
未来可期:
- Discord 即将推出的 Activities 和嵌入式应用
- OpenClaw 计划中的多模态支持(图像、音频分析)
- 更智能的上下文管理和长期记忆
对于技术爱好者来说,现在正是搭建个人 AI 工作流的最佳时机。
参考链接:
本文配置环境:
- OpenClaw: 2026.2.21-2
- Discord API: v10