使用 TypeScript 实现的多平台多协议机器人应用框架,支持 QQ、ICQQ、微信、钉钉、飞书、企业微信、Telegram、Slack、Discord、Kook、Microsoft Teams、Line、Email、WhatsApp、Zulip 等 15+ 平台
Build Package Build Docs License
GitHub stars GitHub forks GitHub issues PRs Welcome
OneBots 是一个基于 TypeScript 开发的多平台、多协议机器人应用框架。它提供了统一的接口来连接和管理不同平台的机器人,支持 OneBot V11/V12、Satori、Milky 等多种协议。
- 🎯 多平台支持 - 支持 QQ、ICQQ、微信、钉钉、飞书、企业微信、Telegram、Slack、Discord、Kook、Microsoft Teams、Line、Email、WhatsApp、Zulip 等 15+ 平台
- 📡 多协议支持 - 支持 OneBot V11/V12、Satori、Milky 等协议
- 🔌 插件化架构 - 适配器和协议可动态加载
- 🏗️ 模块化设计 - 清晰的代码结构,易于扩展和维护
- 📦 Monorepo 管理 - 使用 pnpm workspace 统一管理
- 🎨 Web 管理界面 - 内置可视化管理界面(可选)
- 🔄 事件驱动 - 基于事件的通信机制
- 📝 TypeScript - 完整的类型支持
本项目采用 pnpm workspace 管理的 Monorepo 结构:
onebots/
├── packages/ # 核心包
│ ├── core/ # @onebots/core - 核心抽象层
│ ├── onebots/ # onebots - 主应用包
│ ├── web/ # @onebots/web - Web 管理界面
│ └── imhelper/ # imhelper - 客户端SDK核心
├── adapters/ # 适配器包
│ ├── adapter-qq/ # @onebots/adapter-qq - QQ官方机器人适配器
│ ├── adapter-kook/ # @onebots/adapter-kook - Kook适配器
│ ├── adapter-wechat/ # @onebots/adapter-wechat - 微信适配器
│ ├── adapter-discord/ # @onebots/adapter-discord - Discord适配器
│ ├── adapter-telegram/ # @onebots/adapter-telegram - Telegram适配器
│ ├── adapter-feishu/ # @onebots/adapter-feishu - 飞书适配器
│ ├── adapter-dingtalk/ # @onebots/adapter-dingtalk - 钉钉适配器
│ ├── adapter-slack/ # @onebots/adapter-slack - Slack适配器
│ ├── adapter-wecom/ # @onebots/adapter-wecom - 企业微信适配器
│ ├── adapter-teams/ # @onebots/adapter-teams - Microsoft Teams适配器
│ ├── adapter-line/ # @onebots/adapter-line - Line适配器
│ ├── adapter-email/ # @onebots/adapter-email - 邮件适配器
│ ├── adapter-whatsapp/ # @onebots/adapter-whatsapp - WhatsApp适配器
│ ├── adapter-zulip/ # @onebots/adapter-zulip - Zulip适配器
│ └── adapter-icqq/ # @onebots/adapter-icqq - ICQQ适配器(私有包)
├── protocols/ # 协议包
│ ├── onebot-v11/
│ │ ├── protocol/ # @onebots/protocol-onebot-v11 - OneBot V11协议实现
│ │ └── sdk/ # @imhelper/onebot-v11 - OneBot V11客户端SDK
│ ├── onebot-v12/
│ │ ├── protocol/ # @onebots/protocol-onebot-v12 - OneBot V12协议实现
│ │ └── sdk/ # @imhelper/onebot-v12 - OneBot V12客户端SDK
│ ├── satori-v1/
│ │ ├── protocol/ # @onebots/protocol-satori-v1 - Satori协议实现
│ │ └── sdk/ # @imhelper/satori-v1 - Satori客户端SDK
│ └── milky-1/
│ ├── protocol/ # @onebots/protocol-milky-v1 - Milky协议实现
│ └── sdk/ # @imhelper/milky-v1 - Milky客户端SDK
├── development/ # 开发环境配置
├── docs/ # 文档
└── pnpm-workspace.yaml # workspace 配置
@onebots/core- 核心抽象层,提供适配器、协议、账号等基础接口onebots- 主应用包,提供命令行工具和完整应用功能@onebots/web- Web 管理界面@onebots/adapter-*- 各平台适配器(qq、kook、wechat、discord、telegram、feishu、dingtalk、slack、wecom、teams、line、email、whatsapp、zulip、icqq)@onebots/protocol-*- 各协议实现(onebot-v11、onebot-v12、satori-v1、milky-v1)
imhelper- 客户端SDK核心包,提供统一的客户端接口和接收器@imhelper/onebot-v11- OneBot V11 客户端SDK@imhelper/onebot-v12- OneBot V12 客户端SDK@imhelper/satori-v1- Satori 客户端SDK@imhelper/milky-v1- Milky 客户端SDK
# 克隆项目 git clone https://github.com/liucl-cn/onebots.git cd onebots # 安装依赖 pnpm install
# 运行服务器(开发环境) pnpm dev # 运行 Web 管理界面(可选) pnpm web:dev # 运行客户端SDK开发测试(可选) pnpm sdk:dev # 运行文档(可选) pnpm docs:dev
# 构建所有包 pnpm build # 仅构建核心包 pnpm build:packages # 仅构建适配器和协议 pnpm build:rest
# 运行所有测试 pnpm test # 监听模式 pnpm test:watch # 测试UI pnpm test:ui # 测试覆盖率 pnpm test:coverage
npm install onebots
# 或
pnpm add onebots# QQ官方机器人适配器 npm install @onebots/adapter-qq # Kook适配器 npm install @onebots/adapter-kook # 微信适配器 npm install @onebots/adapter-wechat # Discord适配器 npm install @onebots/adapter-discord # Telegram适配器 npm install @onebots/adapter-telegram # 飞书适配器 npm install @onebots/adapter-feishu # 钉钉适配器 npm install @onebots/adapter-dingtalk # Slack适配器 npm install @onebots/adapter-slack # 企业微信适配器 npm install @onebots/adapter-wecom # Microsoft Teams适配器 npm install @onebots/adapter-teams # Line适配器 npm install @onebots/adapter-line # 邮件适配器 npm install @onebots/adapter-email # WhatsApp适配器 npm install @onebots/adapter-whatsapp # Zulip适配器 npm install @onebots/adapter-zulip
创建 config.yaml:
# 全局配置 port: 6727 # HTTP 服务器端口 log_level: info # 日志级别 # 通用配置(协议默认配置) general: onebot.v11: use_http: true use_ws: true access_token: '' heartbeat_interval: 5000 onebot.v12: use_http: true use_ws: true access_token: '' heartbeat_interval: 5000 satori.v1: use_http: true use_ws: true token: '' milky.v1: use_http: true use_ws: true # 账号配置 kook.zhin: token: 'your_kook_token' onebot.v11: access_token: 'kook_v11_token' onebot.v12: access_token: 'kook_v12_token'
# 使用命令行工具 npx onebots -r kook -r qq -p onebot-v11 -p onebot-v12 -c config.yaml # 或使用 Node.js import { App } from 'onebots'; const app = new App(); await app.start();
npm install imhelper
# 或
pnpm add imhelper# OneBot V11 客户端 npm install @imhelper/onebot-v11 # OneBot V12 客户端 npm install @imhelper/onebot-v12 # Satori 客户端 npm install @imhelper/satori-v1 # Milky 客户端 npm install @imhelper/milky-v1
import { createImHelper } from 'imhelper'; import { createOnebot11Adapter } from '@imhelper/onebot-v11'; // 创建适配器 const adapter = createOnebot11Adapter({ baseUrl: 'http://localhost:6727', selfId: 'zhin', accessToken: 'your_token', receiveMode: 'ws', // 'ws' | 'wss' | 'webhook' | 'sse' path: '/kook/zhin/onebot/v11', wsUrl: 'ws://localhost:6727/kook/zhin/onebot/v11', platform: 'kook', }); // 创建 ImHelper 实例 const helper = createImHelper(adapter); // 监听消息事件 helper.on('message.private', (message) => { console.log('收到私聊消息:', message.content); message.reply('收到!'); }); // 连接 await adapter.connect(); // 发送消息 await helper.sendPrivateMessage('123456', 'Hello!');
更多客户端SDK使用示例,请查看 客户端SDK使用指南
- ✅ QQ官方机器人 - 通过
@onebots/adapter-qq - ✅ ICQQ - 通过
@onebots/adapter-icqq(私有包,需配置 GitHub Packages 访问) - ✅ Kook - 通过
@onebots/adapter-kook - ✅ 微信公众号 - 通过
@onebots/adapter-wechat - ✅ Discord - 通过
@onebots/adapter-discord - ✅ Telegram - 通过
@onebots/adapter-telegram - ✅ 飞书/Lark - 通过
@onebots/adapter-feishu - ✅ 钉钉 - 通过
@onebots/adapter-dingtalk - ✅ Slack - 通过
@onebots/adapter-slack - ✅ 企业微信 - 通过
@onebots/adapter-wecom - ✅ Microsoft Teams - 通过
@onebots/adapter-teams - ✅ Line - 通过
@onebots/adapter-line - ✅ 邮件 - 通过
@onebots/adapter-email - ✅ WhatsApp - 通过
@onebots/adapter-whatsapp - ✅ Zulip - 通过
@onebots/adapter-zulip
- ✅ OneBot V11 - 标准 OneBot V11 协议
- ✅ OneBot V12 - 标准 OneBot V12 协议
- ✅ Satori - Satori 协议
- ✅ Milky - Milky 协议
- packages/core - 核心抽象层,定义适配器、协议、账号等基础接口
- packages/onebots - 主应用包,提供命令行工具和应用逻辑
- packages/web - Web 管理界面
- packages/client - 客户端SDK核心包
- adapters/ - 各平台适配器实现
- protocols/ - 各协议实现和客户端SDK
- 在
adapters/目录下创建新适配器目录 - 实现
Adapter基类的抽象方法 - 在
adapters/*/package.json中配置包名和依赖 - 在主应用的
optionalDependencies中添加新适配器
- 在
protocols/目录下创建新协议目录 - 在
protocol/子目录中实现协议服务端逻辑 - 在
client/子目录中实现协议客户端SDK - 在
protocols/*/protocol/package.json和protocols/*/client/package.json中配置包名
欢迎贡献代码!请查看 CONTRIBUTING.md 了解贡献指南。
MIT License - 查看 LICENSE 文件了解详情
- icqqjs/icqq - 底层服务支持
- takayama-lily/onebot - OneBot V11 参考实现
- zhinjs/kook-client - Kook 客户端参考
- zhinjs/qq-official-bot - QQ官方机器人参考
- QQ群: 860669870
- GitHub Issues: https://github.com/lc-cn/onebots/issues
如果这个项目对你有帮助,欢迎赞助支持!