DM Policy
管私聊谁能来找 bot。pairing 是先登记,allowlist 是只认名单,open 是全放行,disabled 是干脆关门。
Channels 导读
这页教你把 Discord Bot 接入 OpenClaw,核心三步:创建应用、启用 Message Content Intent、配对。最容易漏的是没开 Message Content Intent 导致收不到消息;另外群组 DM 默认关闭,需要手动开启。
先讲这一页到底在解决什么
这页教你把 Discord Bot 接入 OpenClaw,核心三步:创建应用、启用 Message Content Intent、配对。最容易漏的是没开 Message Content Intent 导致收不到消息;另外群组 DM 默认关闭,需要手动开启。
第一站
Discord 通道的第一件事,不是写配置,而是先在 Discord Developer Portal 里造一个应用,再把 bot 请进你的服务器。
你点 Reset Token,其实不是在“重置”什么,而是在拿到第一张真正能用的 bot 工牌。没有它,OpenClaw 连门都进不去。
Discord 的 Server ID、User ID、Channel ID 都要靠开发者模式去复制。它像在楼里找房号,数字才是最稳的门牌。
你在 OAuth2 里勾选 bot 和 applications.commands,再选好权限,生成的链接就像一张请帖,带着机器人走进你的服务器。
Discord 不是“登录一个账号”这么简单,它更像“先造机器人,再拿请帖,把它送进服务器”。
第二站
原文的 quick setup 信息很多,但第一次上手最重要的顺序只有五步。
先去 Discord 后台造应用,再把机器人送进你自己的服务器,接着把三个关键身份信息交给 OpenClaw,最后让它第一次在私聊里报到。
在 Discord Developer Portal 里点 New Application,再去 Bot 页面设置 bot 名字。这里就是先把“机器人同事”造出来。
打开 Message Content Intent,最好再开 Server Members Intent。前者让它看得见消息内容,后者让它更容易做角色白名单和名字转 ID。
在 OAuth2 里生成 invite URL,勾上 bot 和 applications.commands,再选好基本权限。这一步像拿请帖去前台登记,把机器人领进楼里。
Discord bot token 像密码,不要扔到聊天里。先放到环境变量或 SecretRef,再让 OpenClaw 读取。这样就像把钥匙锁进抽屉,而不是挂在门把手上。
bot 先在 DM 里跟你报到,拿到 pairing code,再去批准。等私聊通了,再往 guild 频道扩。
openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN:像先把 bot 工牌放进环境变量柜子里,再告诉 OpenClaw 去那个柜子里取。channels.discord.enabled: true:像把这条通道的开关打开,不然再好的工牌也不会上班。openclaw pairing list discord:像翻门口登记簿,看看谁在等你批准。openclaw pairing approve discord <CODE>:像把这个人从门口放进来,允许它和 bot 正式说话。第三站
原文的 access control 和 routing 其实就在讲这件事:DM 和 guild 不是同一个房间,门禁也不是同一套。
管私聊谁能来找 bot。pairing 是先登记,allowlist 是只认名单,open 是全放行,disabled 是干脆关门。
管服务器频道怎么开门。默认安全基线是 allowlist,也就是先认你列出来的服务器,再决定它能不能说话。
管频道里是不是必须 @ 它才回应。默认是要点名的,这样它在群里不会乱插嘴。
服务器名、用户名会变,数字 ID 不容易变。官方也一直在强调:做白名单,尽量用 ID。
Discord 里“我能私聊 bot”不等于“我能在服务器里随便说话”。DM 授权和 guild 授权是两套门。
第四站
原文还特地讲了 guild workspace。意思很直白:服务器里不同频道,能当成不同的工作小房间,各自有自己的会话。
把 Server ID 放进 guilds,就像给这栋楼发了一张通行证。没有通行证,别的服务器就进不来。
同一个服务器里的 #coding、#home、#research 可以各有各的 session,不会全塞成一锅粥。
Discord 的 guild 频道默认不会像 DM 那样自动加载 MEMORY.md。如果你想让它记住长期信息,最好把稳定规则放进 AGENTS.md 或 USER.md,长期笔记再用 memory 工具去取。
Discord 的服务器像一栋楼,频道像不同房间,OpenClaw 会尽量让它们各自安静地工作。
第五站
如果你用 Discord 的论坛、媒体频道,或者想做按钮、表单、下拉菜单,这一段就很关键。它不是装饰,是让机器人更像一个会操作的小助手。
给论坛父频道发一条消息,就能自动开一个线程。像先在公告板上贴一张纸,再让它自己长成一个话题房间。
按钮、下拉菜单、表单这些组件,都可以像现场小按钮一样,让人点一下再回到 OpenClaw 继续处理。
可以给按钮加 allowedUsers。这就像在按钮上写“只有这几个人可以按”。
file 块要指向附件引用,像把文件名贴在贴纸上,再让系统把对应附件挂上去。
openclaw message thread create:像手工把一个话题房间先开出来。components.reusable: true:像给按钮装上可重复使用的小弹簧,不是按一次就报废。/model 和 /models:像给自己加一个“选老师”的互动菜单。第六站
Discord 原文里还有 native commands、slash commands、thread bindings 和 ACP 绑定。它们的共同点是:不是让页面更花,而是让消息路由更聪明。
commands.native 默认是 auto,Discord 会启用原生命令。你也可以把它关掉,等于把这类快捷入口收起来。
/focus、/unfocus、/agents 这些命令像把某个线程绑到一个固定会话上,方便后续一直在同一个小房间里说话。
commands.native = false:像把 Discord 的原生快捷入口先收起来。session.threadBindings.enabled:像告诉系统“线程绑定这件事我真的要用”。bindings[] 配 ACP:像把某个 Discord 线程直接钉到一个固定代理身上,让它长期值班。Discord 的命令不是摆设,它们是把“哪个房间归谁管”这件事做实的按钮。
最后总结
Discord 通道的本质,就是先造机器人、再给它请帖、再把私聊门和服务器门分别管好,最后让频道和线程各自安静工作。
如果你下一页只继续看一页,我建议先看 /channels/pairing 或 /channels/troubleshooting。Discord 真正容易卡住的,通常不是“能不能连上”,而是“权限、门禁和频道规则有没有摆对”。