Files
LangBot/docs/zh/usage/platforms/discord.mdx
T
RockChinQ 9d2042478a Add 'docs/' from commit '51dddcb3f891d60bc38645e88b2dbd515344da81'
git-subtree-dir: docs
git-subtree-mainline: 0582d1b3d4
git-subtree-split: 51dddcb3f8
2026-10-27 08:04:35 +00:00

64 lines
5.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Discord"
description: "用 LangBot 搭建 Discord AI 机器人,几分钟内将 GPT、Claude、Gemini、DeepSeek 与 Dify 接入 Discord 服务器。"
icon: "/images/platforms/discord.svg"
---
## 创建应用和机器人
在 [Discord 开发者门户](https://discord.com/developers/applications)中选择 **New Application(新 APP)**。应用名称不要包含 `Discord`,否则门户会拒绝创建。按页面提示完成条款确认和人机验证。
1. 在 **General Information(基本信息)** 复制 **Application ID**。它也是 LangBot 所需的 **客户端 ID**,不是服务器 ID 或频道 ID。
2. 打开 **Bot(机器人)**,点击 **Reset Token(重置令牌)** 并完成验证。令牌只显示一次;将它填写到 LangBot,不要放进截图、代码或公开消息。重置后,旧令牌立即失效,需要同步更新 LangBot。
3. 在 **Privileged Gateway Intents** 开启 **Server Members Intent** 和 **Message Content Intent**,点击 **Save Changes**。新版适配器会请求这两项;**Presence Intent 不需要开启**。
## 连接 LangBot
创建机器人,选择新版 **Discord** 适配器(`discord-omni`),填写客户端 ID 和令牌并保存。
接着配置事件处理:
- **Pipeline**:添加“回复收到的消息”规则,将 `message.received` 绑定到已配置模型的流水线。在机器人的事件路由中设置**触发条件**,按消息文本、会话类型或消息元素筛选。显式事件路由会跳过 Pipeline 内的群响应规则;无条件路由会处理每条收到的消息。“@某人”元素条件匹配提及消息,并不限定被提及者是机器人。
- **Agent**:将事件绑定到 Agent。明确要求 Agent 使用事件回复工具发送消息;单纯生成一段文本不等于已发送。只选择验收或业务实际需要的工具。
- **插件处理器**:在机器人页面单独添加已有插件处理器配置。它按插件声明的事件独立接收事件,可与 Pipeline 或 Agent 同时运行。
需要执行代码或生成文件时,为运行器启用可用的 Box 沙箱。不要为了发送附件而启用无关的 MCP 服务器;未配置凭据的外部工具会造成额外失败。
启用机器人,查看日志中的 `Discord adapter running as ...`。这说明网关已登录,还需要在 Discord 实际发送消息确认路由和回复正常。
## 邀请到测试服务器
在开发者门户的 **OAuth2 → URL Generator** 选择 `bot`,选择 **Guild Install(服务器安装)**。普通消息、图片和文件测试可使用以下权限:
- View Channels(查看频道)
- Send Messages(发送消息)
- Embed Links(嵌入链接)
- Attach Files(添加附件)
- Read Message History(阅读消息历史)
- Add Reactions(添加反应)
复制生成的链接,在浏览器中打开,选定自己的测试服务器后授权。不需要授予 Administrator;成员管理、子区等功能再按需增加权限。频道自身的权限覆盖也必须允许机器人访问和发送消息。
## 检查实际收发
先在服务器频道发送一条符合触发条件的消息,再从机器人的资料卡打开私信。分别检查普通回复、逐步更新的流式回复、图片和文本文件输入,以及返回的真实附件。文件名或下载路径出现在文字中不能代替附件送达。
Discord 单条消息有长度限制,长流式输出需要分段送达。检查最后一段和结束标记,不能仅凭 LangBot 运行日志的“成功”判断内容完整。图片理解需要视觉模型;文件处理需要运行器具备相应工具与沙箱能力。
新版适配器还提供消息编辑、删除、添加/移除表情、成员加入/离开、机器人加入/离开服务器,以及平台特定事件。Pipeline 仅处理消息;其他事件应交给 Agent 或对应插件。平台特定事件中的交互提交来自 LangBot 发出的交互组件,不代表任意 Discord 事件都会透传。
消息事件的 `chat_id` 是频道 ID,`group.id` 是服务器 ID。发送到频道时使用频道 ID,查询或管理服务器成员时使用服务器 ID;两者不能互换。
成员加入/离开事件没有来源频道,回复会发送到服务器配置的 **系统消息频道**。请在 Discord 服务器设置中配置该频道,并授予机器人查看频道、发送消息权限;未配置系统消息频道时,回复会明确失败。成员离开回调无法区分主动退群和被踢,不要将 `is_kicked` 作为可靠的管理判断依据。
![Discord 实际投递:插件原样回传上传的图片和文本文件,随后 Pipeline 私聊回复成功。](/images/zh/deploy/bots/discord/attachment-roundtrip.jpg)
## 排查问题
- **无法登录网关**:核对最新 Token,并确认两个必需 Intent 已开启且保存;浏览器登录成功不代表机器人 Token 正确。
- **在线但不回复**:核对启用状态、事件路由、处理器模型、群响应规则和频道权限。独立插件订阅与主路由分开检查。
- **附件失败**:同时检查 Discord 的附件权限、运行器日志、Box 状态和附件下载网络;图片 CDN 可达性与网关连接是两回事。
- **网络受限**:LangBot 所在环境必须能够连接 Discord 网关、API 和附件 CDN。按部署环境配置网络代理。
- **文档截图**:不要截取令牌显示页或真实用户的私人消息。
- **旧会话突然出现附件 404**:Discord 附件链接会过期,历史图片也可能让后续纯文本请求失败。重新上传附件,并使用会话上下文重置;安装 EssentialCommands 时可发送 `!reset`(命令前缀以实例配置为准)。重置上下文不删除监控记录。