客户端SDK使用指南
imhelper 是 onebots 的客户端SDK,提供统一的接口来连接标准协议(OneBot V11/V12、Satori、Milky)和机器人框架,抹平不同协议的差异。
什么是 imhelper?
imhelper 是 onebots 项目的客户端SDK核心,提供:
- 统一接口:无论使用哪种协议(OneBot V11/V12、Satori、Milky),都使用相同的 API
- 多种接收方式:支持 WebSocket、Webhook、SSE 等多种事件接收方式
- 类型安全:完整的 TypeScript 类型支持
- 事件驱动:基于 EventEmitter 的事件系统
架构位置
平台 API (微信、QQ、钉钉...)
↓
onebots (服务端) ← 本项目服务端
↓
标准协议 (OneBot、Satori...)
↓
imhelper (客户端SDK) ← 本项目客户端
↓
机器人框架 (Koishi、NoneBot...)安装
安装核心包
bash
npm install imhelper
# 或
pnpm add imhelper安装协议客户端包
根据你要连接的协议,安装对应的客户端包:
bash
# 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快速开始
1. 创建适配器
typescript
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',
});2. 创建 ImHelper 实例
typescript
import { createImHelper } from 'imhelper';
const helper = createImHelper(adapter);3. 监听事件
typescript
// 监听私聊消息
helper.on('message.private', (message) => {
console.log('收到私聊消息:', message.content);
// 自动回复
message.reply('收到!');
});
// 监听群聊消息
helper.on('message.group', (message) => {
console.log('收到群聊消息:', message.content);
});
// 监听频道消息
helper.on('message.channel', (message) => {
console.log('收到频道消息:', message.content);
});
// 监听所有事件
helper.on('event', (event) => {
console.log('收到事件:', event);
});4. 连接并启动
typescript
// 连接(WebSocket/SSE 模式)
await adapter.connect();
// 或启动 Webhook 服务器(Webhook 模式)
await adapter.connect(8080); // 监听 8080 端口5. 发送消息
typescript
// 发送私聊消息
await helper.sendPrivateMessage('123456', 'Hello!');
// 发送群聊消息
await helper.sendGroupMessage('789012', 'Hello Group!');
// 发送频道消息
await helper.sendChannelMessage('345678', 'Hello Channel!');
// 使用 pick 方法获取对象
const user = helper.pickUser('123456');
await user.sendMessage('Hello!');
const group = helper.pickGroup('789012');
await group.sendMessage('Hello Group!');完整示例
typescript
import { createImHelper } from 'imhelper';
import { createOnebot11Adapter } from '@imhelper/onebot-v11';
async function main() {
// 1. 创建适配器
const adapter = createOnebot11Adapter({
baseUrl: 'http://localhost:6727',
selfId: 'zhin',
accessToken: 'your_token',
receiveMode: 'ws',
path: '/kook/zhin/onebot/v11',
wsUrl: 'ws://localhost:6727/kook/zhin/onebot/v11',
platform: 'kook',
});
// 2. 创建 ImHelper 实例
const helper = createImHelper(adapter);
// 3. 监听消息事件
helper.on('message.private', (message) => {
console.log(`收到私聊消息 [${message.sender.id}]:`, message.content);
// 自动回复
message.reply('收到你的消息了!');
});
helper.on('message.group', (message) => {
console.log(`收到群聊消息 [${message.scene_id}]:`, message.content);
// 如果消息包含 @机器人,则回复
if (message.content.includes('@机器人')) {
message.reply('我在!');
}
});
// 4. 连接
await adapter.connect();
console.log('✅ 客户端已连接');
// 5. 优雅关闭
process.on('SIGINT', async () => {
console.log('正在关闭...');
await adapter.stop();
process.exit(0);
});
}
main().catch(console.error);接收方式
imhelper 支持多种事件接收方式:
WebSocket (推荐)
typescript
const adapter = createOnebot11Adapter({
// ...
receiveMode: 'ws',
wsUrl: 'ws://localhost:6727/kook/zhin/onebot/v11',
});
await adapter.connect();WebSocket Secure (WSS)
typescript
const adapter = createOnebot11Adapter({
// ...
receiveMode: 'wss',
wsUrl: 'wss://localhost:6727/kook/zhin/onebot/v11',
});
await adapter.connect();Webhook
typescript
const adapter = createOnebot11Adapter({
// ...
receiveMode: 'webhook',
// webhook 需要服务器端配置回调地址
});
await adapter.connect(8080); // 启动本地 Webhook 服务器Server-Sent Events (SSE)
typescript
const adapter = createOnebot11Adapter({
// ...
receiveMode: 'sse',
sseUrl: 'http://localhost:6727/kook/zhin/onebot/v11/events',
});
await adapter.connect();API 参考
ImHelper 类
事件
message.private- 私聊消息事件message.group- 群聊消息事件message.channel- 频道消息事件event- 所有原始事件
方法
sendPrivateMessage(userId, message)- 发送私聊消息sendGroupMessage(groupId, message)- 发送群聊消息sendChannelMessage(channelId, message)- 发送频道消息pickUser(userId)- 获取用户对象pickGroup(groupId)- 获取群组对象pickChannel(channelId)- 获取频道对象
Message 类
属性
id- 消息IDscene_type- 场景类型('private' | 'group' | 'channel')scene_id- 场景IDcontent- 消息内容sender- 发送者(User 对象)time- 时间戳
方法
reply(message)- 回复消息
User 类
方法
sendMessage(message)- 发送消息给该用户
Group 类
方法
sendMessage(message)- 发送消息到该群组
Channel 类
方法
sendMessage(message)- 发送消息到该频道
支持的协议
- ✅ OneBot V11 - 通过
@imhelper/onebot-v11 - ✅ OneBot V12 - 通过
@imhelper/onebot-v12 - ✅ Satori - 通过
@imhelper/satori-v1 - ✅ Milky - 通过
@imhelper/milky-v1