OpenClaw 中文文档 — Discord 与 Slack 接入
本文覆盖 Discord 和 Slack 两个渠道的完整接入配置。前者定位开发者社区和游戏社群,后者面向企业团队协作场景。两者的接入复杂度都高于 Telegram,但功能也更丰富。
Discord
接入架构
Discord 渠道通过官方 Discord Gateway 接入,使用 discord.js 框架。支持服务器频道和私信两种通信模式。
配置流程
Discord 的设置步骤较多,涉及 Developer Portal 操作:
第 1 步:创建应用和 Bot
在 Discord Developer Portal 创建应用,进入 Bot 页面设置用户名。
第 2 步:启用特权意图
| 意图 | 必要性 | 说明 |
|---|---|---|
| Message Content Intent | 必需 | 不开则收到的消息内容为空 |
| Server Members Intent | 推荐 | 角色白名单和名称解析所需 |
| Presence Intent | 可选 | 仅在线状态更新需要 |
第 3 步:获取 Bot Token 和 ID
- Bot 页面点 Reset Token 获取 Bot Token
- 开启 Developer Mode(User Settings → Advanced)
- 右键服务器图标获取 Server ID
- 右键自己头像获取 User ID
第 4 步:邀请 Bot 到服务器
OAuth2 页面生成邀请 URL,勾选 bot + applications.commands,权限选择:View Channels、Send Messages、Read Message History、Embed Links、Attach Files。
第 5 步:配置 OpenClaw
{
channels: {
discord: {
enabled: true,
token: "YOUR_BOT_TOKEN",
},
},
}
环境变量备选:DISCORD_BOT_TOKEN=...(仅默认账户)。Token 也支持 SecretRef 值。
第 6 步:配对
需要先在 Discord 服务器的 Privacy Settings 中开启 Direct Messages,否则 Bot 无法发送配对码。
openclaw pairing list discord
openclaw pairing approve discord <CODE>
服务器工作区配置
Discord 的一个特色是可以将服务器设置为完整的工作区,每个频道拥有独立的 Agent 会话:
{
channels: {
discord: {
groupPolicy: "allowlist",
guilds: {
"SERVER_ID": {
requireMention: true,
users: ["USER_ID"],
},
},
},
},
}
值得注意的是,Discord 使用 guilds 而非 groups 作为服务器配置键——这与 Discord 内部术语一致(Discord 称服务器为 Guild)。
私人服务器(仅自己和 Bot)可设置 requireMention: false,无需 @提及即可回复。
特性概述
- 线程支持:每个线程可有独立会话
- 按频道配置:不同频道可配不同工具权限和系统提示词
- 斜杠命令:支持注册和使用
- 多账户:支持多个 Discord Bot 账户
Slack
接入架构
Slack 渠道基于 Bolt SDK,支持两种连接模式:Socket Mode(默认,推荐)和 HTTP Events API。
Socket Mode 配置
Socket Mode 不需要公网入口,适合大多数场景。
第 1 步:创建 Slack 应用
- 启用 Socket Mode
- 创建 App Token(
xapp-...),权限connections:write - 安装应用并获取 Bot Token(
xoxb-...)
第 2 步:订阅事件
订阅 Bot 事件:app_mention、message.channels、message.groups、message.im、message.mpim、reaction_added、reaction_removed 等。同时启用 App Home 的 Messages Tab。
第 3 步:配置
{
channels: {
slack: {
enabled: true,
mode: "socket",
appToken: "xapp-...",
botToken: "xoxb-...",
},
},
}
HTTP Events API 配置
适合需要公网 webhook 的场景:
{
channels: {
slack: {
enabled: true,
mode: "http",
botToken: "xoxb-...",
signingSecret: "your-signing-secret",
webhookPath: "/slack/events",
},
},
}
多账户 HTTP 模式下,每个账户需要唯一的 webhookPath 以避免冲突。
Token 模型
| 模式 | 所需 Token |
|---|---|
| Socket Mode | botToken + appToken |
| HTTP | botToken + signingSecret |
可选的 userToken(xoxp-...)默认为只读行为,用于操作/目录读取。
访问控制
频道策略:
频道白名单使用稳定的频道 ID。名称到 ID 的解析在启动时进行(需 Token 有相应权限)。默认使用 ID 优先匹配,直接名称匹配需显式启用 dangerouslyAllowNameMatching: true。
{
channels: {
slack: {
groupPolicy: "allowlist",
channels: {
"C01234567": {
requireMention: true,
users: ["U01234567"],
},
},
},
},
}
按频道配置支持的选项:requireMention、users(白名单)、allowBots、skills、systemPrompt、tools、toolsBySender。
特色功能
交互式回复:
{
channels: { slack: { capabilities: { interactiveReplies: true } } },
}
启用后,Agent 可以生成 Slack Block Kit 控件:
[[slack_buttons: Approve:approve, Reject:reject]][[slack_select: Choose | Option1:val1, Option2:val2]]
交互回调通过 Slack 交互事件路径路由回 Agent。如果生成的区块超过 Slack 限制,自动回退到纯文本。
原生流式传输:
通过 Slack Agents and AI Apps API 实现实时流式输出。需要 assistant:write 权限和 Agents and AI Apps 功能启用。
流程:首个分块启动流(chat.startStream)→ 后续分块追加(chat.appendStream)→ 结束(chat.stopStream)。媒体和非文本回退到正常投递。
命令系统:
Slack 的原生命令自动模式默认关闭(与 Telegram 不同)。需要显式启用:
{ channels: { slack: { commands: { native: true } } } }
命令菜单自适应渲染:5 个以下选项用按钮,6-100 用静态选择菜单,100 以上用异步过滤。
线程行为:
thread.historyScope默认threadthread.initialHistoryLimit控制新线程会话的历史注入量(默认 20)replyToMode控制回复线程行为
值得注意的差异:Slack 的 replyToMode="off" 会禁用所有回复线程(包括显式标签),而 Telegram 在 off 下仍处理显式标签。这反映了平台差异——Slack 线程将消息从频道流中隐藏,Telegram 回复在主流中可见。
故障排查
| 症状 | 检查项 |
|---|---|
| 频道无回复 | groupPolicy → 频道白名单 → requireMention → users |
| 私信被忽略 | dm.enabled → dmPolicy → 配对/白名单 |
| Socket 连不上 | Bot Token + App Token + Socket Mode 启用状态 |
| HTTP 无事件 | signing secret → webhook 路径 → Slack Request URL |
架构对比
| 维度 | Discord | Slack |
|---|---|---|
| 框架 | discord.js | Bolt SDK |
| 连接模式 | Gateway | Socket Mode / HTTP |
| 群组模型 | Guild → Channel | Workspace → Channel → Thread |
| 白名单标识 | 数字 ID | Channel ID (C*) / User ID (U*) |
| 交互控件 | 基础按钮 | Block Kit(按钮、菜单、模态框) |
| 流式传输 | 消息编辑 | 原生 Streaming API |
| 命令 | 斜杠命令 | 斜杠命令 + 自适应菜单 |
| 配置复杂度 | 中等 | 较高 |
从架构层面来看,Slack 的功能更丰富(Block Kit、原生流式 API、自适应命令菜单),但配置复杂度也更高。Discord 相对简洁,但服务器工作区模式为每个频道提供了良好的会话隔离。
本文是渠道篇的第三篇。下一篇覆盖 iMessage 和 Signal 的接入配置。
完整中文文档:OpenClaw 中文文档
GitHub 仓库:openclaw/openclaw

浙公网安备 33010602011771号