Discord 适配器文档
概述
这是 LangBot 平台的 Discord 适配器完整文档,基于 discord.py 库实现了与 Discord 平台的全面集成,包括文本消息、图像处理、语音功能等完整功能集。
文档导航
核心文档
完整功能集
消息处理
- 文本消息发送和接收
- 图像消息处理(支持多种格式)
- 消息引用和回复
- At 功能支持
- 转发消息处理
图像功能
- 多格式图像支持(PNG、JPG、GIF、WebP)
- Base64 编码图像处理
- URL 图像下载和转换
- 本地文件图像读取
- 自动文件类型检测
- 批量图像发送
语音功能
- 语音频道连接管理
- 音频播放控制
- 连接状态监控
- 权限验证系统
- 自动连接清理
事件系统
- 消息事件处理
- 用户状态监控
- 频道状态变化
- Bot 生命周期管理
快速开始
环境要求
- LangBot: 框架环境
系统架构
核心组件
mermaid
graph TD
A[Discord Adapter] --> B[DiscordAdapter]
A --> C[DiscordMessageConverter]
A --> D[DiscordEventConverter]
A --> E[VoiceConnectionManager]
A --> F[MyClient]
B --> G[消息发送/接收]
C --> H[格式转换]
D --> I[事件处理]
E --> J[语音连接]
F --> K[Discord API]
消息处理流程
mermaid
sequenceDiagram
participant U as Discord User
participant D as Discord API
participant A as DiscordAdapter
participant E as EventConverter
participant P as Plugin
participant M as MessageConverter
U->>D: 发送消息
D->>A: Discord Message
A->>E: target2yiri()
E->>P: MessageEvent
P->>A: 回复请求
A->>M: yiri2target()
M->>D: Discord 格式
D->>U: 显示回复
图像处理流程
mermaid
graph TD
A[Image Element] --> B{图像来源}
B -->|base64| C[Base64 解码]
B -->|url| D[HTTP 下载]
B -->|path| E[文件读取]
C --> F[格式检测]
D --> F
E --> F
F --> G[文件名生成]
G --> H[discord.File 创建]
H --> I[上传到 Discord]
语音处理流程
mermaid
graph TD
A[语音指令] --> B[权限检查]
B --> C{用户在频道?}
C -->|否| D[权限错误]
C -->|是| E[Bot权限检查]
E --> F{有连接权限?}
F -->|否| D
F -->|是| G[建立连接]
G --> H[音频处理]
H --> I[Discord Voice API]
核心特性详解
消息转换器 (DiscordMessageConverter)
负责在 LangBot 内部消息格式和 Discord API 格式之间进行转换:
- yiri2target: 将 LangBot MessageChain 转换为 Discord 格式
- target2yiri: 将 Discord 消息转换为 LangBot 格式
- 支持文本、图像、转发消息等多种类型
图像处理特性
- 多源支持: Base64、URL、本地文件路径
- 格式检测: 自动检测 PNG、JPG、GIF、WebP 格式
- 智能命名: 基于内容和来源的文件命名
- 错误处理: 优雅处理无效图像和网络错误
- 批量处理: 单次消息支持多张图像
语音连接管理器 (VoiceConnectionManager)
提供完整的语音功能管理:
- 连接池管理: 多服务器连接状态跟踪
- 权限验证: 用户和机器人权限检查
- 状态监控: 连接健康度和延迟监控
- 异常处理: 分类的异常体系
- 自动清理: 定期清理无效连接
事件系统
- 消息事件: 处理用户消息和机器人响应
- 状态监控: 跟踪连接状态变化
- 生命周期: 管理适配器启动和关闭
权限配置
Bot 需要以下 Discord 权限:
基础权限:
- Read Messages
- Send Messages
- Embed Links
- Attach Files
- Read Message History
语音权限:
- Connect
- Speak
- Use Voice Activity
注意: 本文档基于实际的 discord.py 实现,涵盖了 Discord 适配器的完整功能集。语音功能需要额外的依赖安装,图像功能支持多种来源和格式。详细的使用方法和故障排除请参考其他专门文档。