Discord 接入
Hermes 支持通过 Discord Bot 接入,可在服务器频道或私信中使用,并支持加入语音频道进行语音交互。
前置条件
- 已安装并运行 Hermes
- 拥有 Discord 账号
- 拥有一个 Discord 服务器(或有权限邀请 Bot 的服务器)
第一步:创建 Discord 应用和 Bot
点击右上角 New Application,输入应用名称(如
Hermes Agent)进入左侧 Bot 页面,点击 Add Bot,确认创建
在 Bot 页面找到 Token 区域,点击 Reset Token 获取 Bot Token,立即复制保存(只显示一次)
在同一页面开启以下权限(Privileged Gateway Intents):
- Server Members Intent
- Message Content Intent
第二步:配置环境变量
编辑 ~/.hermes/.env:
bash
# Discord Bot Token
DISCORD_BOT_TOKEN=MTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 允许使用的用户 ID(Discord 用户的数字 ID,多个用逗号分隔)
DISCORD_ALLOWED_USERS=123456789012345678,987654321098765432如何获取 Discord 用户 ID
- 在 Discord 设置中开启开发者模式(设置 -> 高级 -> 开发者模式)
- 右键点击自己的用户名,选择 复制用户 ID
第三步:邀请 Bot 到服务器
在 Developer Portal 进入 OAuth2 -> URL Generator
在 Scopes 中勾选:
botapplications.commands
在 Bot Permissions 中勾选必要权限:
权限 说明 Send Messages 发送文字消息 Read Message History 读取历史消息 Attach Files 发送文件附件 Embed Links 发送嵌入式内容 Connect 连接语音频道 Speak 在语音频道发言 Use Voice Activity 使用语音活动检测 复制生成的链接,在浏览器中打开,选择要邀请 Bot 的服务器,点击 授权
第四步:运行配置向导并启动
bash
hermes gateway setup
# 选择 Discord
hermes gateway start语音频道支持
Hermes 可以加入 Discord 语音频道,实现语音对话。
语音命令
在文字频道中发送以下命令控制语音:
| 命令 | 说明 |
|---|---|
/voice join | 加入当前你所在的语音频道 |
/voice leave | 离开语音频道 |
/voice status | 查看当前语音连接状态 |
使用流程
- 先加入一个语音频道
- 在文字频道发送
/voice join - Bot 会加入你所在的语音频道
- 对着麦克风说话,Bot 会自动检测并响应
- 发送
/voice leave结束语音会话
语音权限要求
Bot 需要以下语音相关权限(邀请时需勾选):
- Connect(连接语音频道)
- Speak(在频道中发言/播放音频)
- Use Voice Activity(使用语音活动检测,而非按键说话模式)
频道和私信使用
私信(DM)
直接向 Bot 发送私信即可开始对话,无需在服务器中使用。
服务器频道
在服务器频道中,有两种触发方式:
- 提及 Bot:
@HermesAgent 你好,帮我写一段代码 - 私信模式:直接在 Bot 专属频道中发送消息(取决于服务器配置)
斜杠命令
Hermes Discord Bot 支持以下斜杠命令(输入 / 后从菜单选择):
| 命令 | 说明 |
|---|---|
/new | 开始新会话 |
/reset | 重置当前会话 |
/model | 切换 AI 模型 |
/voice join | 加入语音频道 |
/voice leave | 离开语音频道 |
/voice status | 语音状态 |
/help | 显示帮助 |
常见问题
Bot 在线但不响应消息?
- 确认已开启 Message Content Intent(Developer Portal -> Bot 页面)
- 确认你的用户 ID 在
DISCORD_ALLOWED_USERS中 - 在服务器频道中确认用了
@Bot名提及方式
Bot 无法加入语音频道?
- 确认 Bot 有 Connect 和 Speak 权限
- 确认 Bot 已被邀请到服务器(不只是私信可用)
- 检查语音频道是否有用户数量限制
斜杠命令不显示?
- 邀请链接中需包含
applications.commandsscope - 等待几分钟让命令同步到 Discord 服务器