渠道接入
Hermes Agent 接入 Discord
把 Hermes Agent 接到 Discord 机器人上。本文讲怎么在 Discord Developer Portal 建应用、拿 Bot Token、开 Privileged Intents、生成 OAuth2 邀请链接、改 hermes 配置,以及为什么 Discord 的 dmPolicy 用 open 是安全的。
准备工作
- 一个 Discord 账号 + 一个能管理的服务器(你想把机器人加到哪个 Server)
- 已经在跑的 Hermes Agent(没跑起来先看 安装指南)
- 不需要公网 HTTPS:Discord Bot 默认走 WebSocket Gateway,Hermes 主动连
第一步:在 Discord Developer Portal 建应用
- 打开 discord.com/developers/applications,点 New Application。
- 填名字(这就是机器人显示名),创建。
- 左侧 Bot → Add Bot。这里能看到 Bot Token,点 Reset Token 复制下来,泄露了别人就能控制你的机器人。
- 记下 Application ID(左侧 General Information 里),生成邀请链接要用。
第二步:开 Privileged Intents
Bot 页面下方有三个 Privileged Gateway Intents 开关,必须勾上:
PRESENCE INTENT(看用户在线状态,可选)SERVER MEMBERS INTENT(读群成员,建议开)MESSAGE CONTENT INTENT(读消息内容,必须开,否则机器人收到的消息全是空内容)
不开 MESSAGE CONTENT INTENT 是 Discord 上接 AI 机器人最常踩的坑,机器人看着收到了消息但内容全空。
第三步:用环境变量启动 Hermes(最快)
docker run -d \
-e OPENROUTER_API_KEY="sk-or-v1-..." \
-e DISCORD_BOT_TOKEN="MTI..." \
-p 8642:8642 \
ghcr.io/nousresearch/hermes-agent:latest第四步:用 hermes.json 精细控制
{
"channels": {
"discord": {
"enabled": true,
"botToken": "${DISCORD_BOT_TOKEN}",
"dmPolicy": "open",
"allowFrom": ["*"]
}
},
"plugins": {
"entries": {
"discord": { "enabled": true }
}
}
}
dmPolicy:Discord 用 open + allowFrom: ["*"]
跟 Telegram 不一样,Discord 机器人是 invite-only:用户必须先把机器人邀请到自己的服务器,或者机器人主动加到一个共同服务器,才能私聊。陌生人不能搜到你的机器人然后随便发消息。所以 Discord 用 dmPolicy: "open" + allowFrom: ["*"] 是安全的。
如果你强行用 pairing,会出现一个糟糕的 UX:用户要先 DM 机器人拿配对码,然后跳到 Web 网关确认绑定,再回 Discord 私聊 —— Discord 用户根本不习惯这种流程,绝大多数人会卡住。
注意:dmPolicy: "open" 必须配 allowFrom,否则 Hermes 启动会报错:channels.discord.dmPolicy="open" requires channels.discord.allowFrom to include "*"。
第五步:生成邀请链接,把机器人加到服务器
- 左侧 OAuth2 → URL Generator。
- SCOPES 勾
bot和applications.commands。 - BOT PERMISSIONS 至少勾:Read Messages/View Channels、Send Messages、Read Message History、Use Slash Commands、Embed Links、Attach Files。
- 底下生成的 URL 复制,在浏览器打开,选你管理的服务器,授权。
- 回到 Discord 服务器,机器人应该已经出现在成员列表里。
测试
- 在服务器频道里 @ 机器人发消息:
@MyBot 你好 - 私聊机器人:直接发消息(dmPolicy=open 时无需配对)
- 看
docker logs hermes确认消息进来了
常见报错
Used disallowed intents
没开 Privileged Intents。回 Developer Portal Bot 页面把三个开关勾上(最重要是 MESSAGE CONTENT INTENT),重启 Hermes。
机器人能收到消息但内容是空字符串
MESSAGE CONTENT INTENT 没开。Discord 在 2022 年改了策略,没拿到这个 intent 的机器人只能看到自己被 mention 的消息内容,其他全是空。
401 Unauthorized — Invalid Token
Token 错了或过期。Developer Portal Bot 页面 Reset Token 重新拿一个。注意 token 一旦在公开仓库出现,Discord 会自动撤销。
机器人在线但群里 @ 不回
plugins.entries.discord.enabled没设 true- OPENROUTER_API_KEY 没传或额度耗尽
- 看
docker logs hermes 2>&1 | grep discord找具体错误
Slash Commands 不出现
生成邀请链接时漏了 applications.commands scope。重新生成、重新邀请(或者用 Reauthorize 链接)。
多服务器场景
一个机器人 token 可以加到任意多个 Discord 服务器,Hermes 不需要每个 Server 都配一遍。allowFrom 想限制只在某些服务器可用,填 Discord Server ID(右键服务器 → 复制服务器 ID,需要先开开发者模式)。
托管版:OpenClaw Launch
Discord Developer Portal、Privileged Intents、OAuth2 邀请链接、Slash Command 注册、Token 撤销重发 —— 这些都搞清楚要时间。 OpenClaw Launch 托管版直接提供 Hermes Agent 的 Discord 渠道,在 Dashboard 填 Bot Token 就能跑。首月 $3,之后 $6/月。