Skip to content

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 等)独立导出

下一章:消息路由

OpenClaw 源码学习教程