Discord
本文介绍如何创建 Discord 应用,将服务器中的 Slash Command 通过 HTTP Interactions 发送到腾讯云 EdgeOne Makers,由 Agent 处理后返回当前频道。完成命令测试后,可使用模板自带的 Gateway 入口验证普通消息和 @Bot。
前提条件和适用范围
已有 Discord 账号和测试服务器,具备该服务器的 Manage Server 权限。
可登录 Discord Developer Portal 创建应用。
已开通 Makers。
本地已安装 Python 3,用于注册测试命令。
本文采用 Guild Install,先验证服务器普通文本频道中的
/ask,不覆盖用户安装、语音和附件处理。创建应用并获取凭证
1. 登录 Developer Portal,单击 New Application,填写名称,例如
Makers Assistant,完成创建。2. 进入 General Information,复制 Application ID 和 Public Key。
3. 进入 Bot,在 Token 区域按界面提示生成或重置 Token,并立即安全保存。重置已有 Token 会使旧 Token 失效。
配置 | 用途 | 是否敏感 |
Application ID | 标识应用,注册命令。 | 否。 |
Public Key | 验证 HTTP Interactions 的 Ed25519 签名。 | 否。 |
Bot Token | 调用 Discord API;Gateway 登录。 | 是。 |
配置安装权限并添加到服务器
1. 进入 Installation,在 Installation Contexts 中启用 Guild Install。
2. 将 Install Link 设置为 Discord Provided Link。
3. 在 Default Install Settings > Guild Install 中选择
applications.commands 和 bot。4. 为本教程的普通文本频道测试配置以下 Bot 权限。
权限 | 用途 | 配置范围 |
View Channels | 访问测试频道 | 必需 |
Send Messages | 发送回复 | 必需 |
Read Message History | 读取消息或定位历史消息时使用 | 可选;仅需要该能力时添加 |
Create Public Threads | 当前 Adapter 处理 Gateway 提及时创建线程 | 仅可选 Gateway 测试需要 |
Send Messages in Threads | 在线程中发送消息 | 仅测试线程会话时需要 |
Manage Threads | 当前模板删除 Gateway 提及时生成的空线程 | 仅可选 Gateway 提及测试需要 |
5. 复制 Install Link,在浏览器打开,选择 Add to server,选择测试服务器并完成授权。
6. 确认 Bot 出现在服务器成员列表中;在测试频道检查权限覆盖规则,确保没有显式禁止查看或发送消息。

参考图中的 Guild Install 区域选择
applications.commands 和 bot;权限按上表补齐 View Channels 与 Send Messages。
不要授予 Administrator。后续新增权限时,使用更新后的安装链接重新授权,或由管理员调整 Bot 角色及频道权限。安装了
applications.commands 不等于已经创建 /ask 命令,步骤5会注册命令。部署 Makers 模板
1. 打开 Makers Agent for IM 模板。
2. 在项目环境变量设置中填写以下变量(负责一份.env.example 为.env)。
环境变量 | 是否必填 | 填写说明 |
DISCORD_APPLICATION_ID | 是 | Application ID |
DISCORD_PUBLIC_KEY | 是 | Public Key |
DISCORD_BOT_TOKEN | 是 | Bot Token |
3. 保存配置并部署
4. 复制生产环境 HTTPS 域名,在末尾添加 /discord
5. 注意服务应该部署在全球可用区,discord 服务才能正确访问。
步骤4:保存 Interactions Endpoint URL
1. 返回 Developer Portal 的 General Information。
2. 在 Interactions Endpoint URL 中输入步骤3的完整地址,保存配置。
3. 确认地址验证成功。Discord 会发送签名 PING,模板通过 Public Key 验证后返回 PONG。

注册测试服务器的 /ask 命令
1. 在 Discord 客户端进入 User Settings > Advanced,开启 Developer Mode。
2. 右键单击测试服务器图标,选择 Copy Server ID,记录服务器 ID(Guild ID)。
3. 在本地终端执行以下命令,创建并运行注册脚本。输入步骤1的 Application ID、测试服务器 ID 和 Bot Token;Token 使用隐藏输入,不写入文件。
cat > register-discord-command.py <<'PY'import getpassimport jsonimport urllib.errorimport urllib.requestapplication_id = input('Application ID:').strip()guild_id = input('测试服务器 ID:').strip()bot_token = getpass.getpass('Bot Token(隐藏输入):').strip()if not application_id.isdigit() or not guild_id.isdigit():raise SystemExit('Application ID 和服务器 ID 必须为数字。')command = {'name': 'ask','type': 1,'description': '向 Makers Agent 提问','options': [{'name': 'question','type': 3,'description': '请输入问题','required': True,}],}url = ('https://discord.com/api/v10/applications/' + application_id+ '/guilds/' + guild_id + '/commands')request = urllib.request.Request(url,data=json.dumps(command).encode(),headers={'Authorization': 'Bot ' + bot_token,'Content-Type': 'application/json','User-Agent': 'Makers-IM-Setup/1.0',},method='POST',)try:with urllib.request.urlopen(request, timeout=30) as response:result = json.load(response)except urllib.error.HTTPError as error:raise SystemExit(f'Discord HTTP {error.code},请检查凭证、安装状态和请求参数。') from Noneexcept urllib.error.URLError:raise SystemExit('无法连接 Discord API,请检查网络。') from Noneprint('已注册命令:/' + result['name'])print('命令 ID:' + result['id'])PYpython3 register-discord-command.py
模板已注册
onSlashCommand,会将 question 参数文本传给 Agent,无需另写命令处理函数。发送命令并验证
1. 打开 Bot 有权限访问的测试服务器文本频道,输入
/ask。2. 从命令列表中选择当前应用的命令,在
question 参数中填写 请用一句话介绍腾讯云 EdgeOne Makers。发送命令。3. 确认出现
Thinking…,随后更新为 Agent 的最终回复。4. 再执行
/ask,输入 请把上一条回答缩短为十个字以内。确认第二轮回复。

