Discord 实现
Discord 通道基于 discord.js 构建,支持 Embed、线程、反应、角色权限等 Discord 原生功能。
源码位置
src/discord/
├── send.ts # 消息发送模块
├── channels.ts # 频道操作
├── emojis.ts # 自定义表情
├── guild.ts # 服务器操作
├── messages.ts # 消息处理
├── reactions.ts # 反应操作
├── outbound.ts # 出站适配器
├── threads.ts # 线程管理
├── permissions.ts # 权限检查
├── roles.ts # 角色管理
├── timeouts.ts # 超时/禁言
└── *.test.ts # 测试文件模块化设计
Source: src/discord/send.ts
Discord 实现高度模块化,每个功能独立导出:
typescript
// src/discord/send.ts (simplified)
export {
channels, // Channel CRUD operations
emojis, // Custom emoji management
guild, // Guild/server operations
messages, // Message send/edit/delete
reactions, // Add/remove reactions
outbound, // OutboundAdapter implementation
threads, // Thread create/archive/search
permissions, // Permission checks
roles, // Role management
timeouts, // Member timeouts
};消息限制
Discord 的消息限制比 Telegram 更严格:
| 限制 | 值 |
|---|---|
| 消息长度 | 2000 字符 |
| Embed 描述 | 4096 字符 |
| Embed 字段 | 25 个 |
| 文件附件 | 25MB (普通) / 100MB (Nitro) |
线程支持
Discord 的线程功能是群组对话的核心。OpenClaw 支持:
- 创建新线程
- 在现有线程中回复
- 线程搜索和归档管理
权限系统
Discord 有复杂的权限层级:
OpenClaw 在发送消息前会检查 bot 在目标频道/线程中的权限。
小结
- 基于 discord.js,高度模块化设计
- 消息限制 2000 字符,需要更频繁的分块
- 支持 线程、反应、Embed、权限检查
- 每个功能(channels, emojis, guild, threads 等)独立导出
下一章:消息路由