node-karin 0.6.17 → 0.6.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/adapter/index.d.ts +1 -1
- package/lib/adapter/index.js +1 -1
- package/lib/adapter/input/index.d.ts +16 -3
- package/lib/adapter/input/index.js +52 -38
- package/lib/adapter/kritor/grpc.d.ts +3 -2
- package/lib/adapter/kritor/grpc.js +80 -64
- package/lib/adapter/kritor/index.d.ts +38 -18
- package/lib/adapter/kritor/index.js +30 -11
- package/lib/adapter/onebot/11/convert.d.ts +11 -0
- package/lib/adapter/onebot/11/convert.js +168 -0
- package/lib/adapter/onebot/11/event.d.ts +25 -0
- package/lib/adapter/onebot/11/event.js +425 -0
- package/lib/adapter/onebot/11/index.d.ts +506 -0
- package/lib/adapter/onebot/11/index.js +1047 -0
- package/lib/cli/init.js +5 -0
- package/lib/core/karin.d.ts +3 -4
- package/lib/core/karin.js +3 -2
- package/lib/core/listener.d.ts +2 -2
- package/lib/core/listener.js +2 -2
- package/lib/core/plugin.app.js +2 -1
- package/lib/core/plugin.d.ts +4 -4
- package/lib/core/plugin.js +2 -1
- package/lib/core/plugin.loader.d.ts +3 -3
- package/lib/core/plugin.loader.js +2 -1
- package/lib/core/server.js +3 -3
- package/lib/event/event.handler.d.ts +5 -5
- package/lib/event/event.handler.js +6 -5
- package/lib/event/index.d.ts +0 -4
- package/lib/event/index.js +0 -4
- package/lib/event/message.handler.d.ts +3 -3
- package/lib/event/notice.handler.d.ts +3 -3
- package/lib/event/notice.handler.js +17 -16
- package/lib/event/request.handler.d.ts +3 -3
- package/lib/event/request.handler.js +4 -3
- package/lib/event/review.handler.d.ts +7 -8
- package/lib/index.js +1 -1
- package/lib/types/adapter/adapter.d.ts +564 -0
- package/lib/types/adapter/adapter.js +1 -0
- package/lib/types/{api.d.ts → adapter/api.d.ts} +103 -3
- package/lib/types/adapter/api.js +1 -0
- package/lib/types/element.d.ts +5 -4
- package/lib/types/event/contact.d.ts +28 -0
- package/lib/types/event/contact.js +13 -0
- package/lib/types/event/event.d.ts +390 -0
- package/lib/types/event/event.js +234 -0
- package/lib/types/event/index.d.ts +12 -0
- package/lib/types/event/index.js +7 -0
- package/lib/types/event/message.d.ts +104 -0
- package/lib/types/event/message.js +72 -0
- package/lib/types/event/notice.d.ts +513 -0
- package/lib/types/event/notice.js +52 -0
- package/lib/types/{reply.d.ts → event/reply.d.ts} +2 -2
- package/lib/types/event/reply.js +1 -0
- package/lib/types/event/request.d.ts +126 -0
- package/lib/types/event/request.js +52 -0
- package/lib/types/event/sender.d.ts +44 -0
- package/lib/types/event/sender.js +22 -0
- package/lib/types/index.d.ts +6 -5
- package/lib/types/index.js +6 -5
- package/lib/types/onebot11/api.d.ts +53 -0
- package/lib/types/onebot11/api.js +54 -0
- package/lib/types/onebot11/event.d.ts +619 -0
- package/lib/types/onebot11/event.js +56 -0
- package/lib/types/onebot11/index.d.ts +6 -0
- package/lib/types/onebot11/index.js +6 -0
- package/lib/types/onebot11/params.d.ts +609 -0
- package/lib/types/onebot11/params.js +7 -0
- package/lib/types/onebot11/response.d.ts +516 -0
- package/lib/types/onebot11/response.js +1 -0
- package/lib/types/onebot11/segment.d.ts +268 -0
- package/lib/types/onebot11/segment.js +30 -0
- package/lib/types/onebot11/sender.d.ts +59 -0
- package/lib/types/onebot11/sender.js +1 -0
- package/lib/types/plugin.d.ts +13 -9
- package/lib/utils/button.d.ts +2 -2
- package/lib/utils/common.d.ts +2 -2
- package/lib/utils/config.js +3 -3
- package/lib/utils/handler.d.ts +2 -2
- package/lib/utils/handler.js +1 -1
- package/lib/utils/init.d.ts +1 -1
- package/lib/utils/init.js +2 -1
- package/lib/utils/segment.d.ts +2 -2
- package/package.json +1 -1
- package/lib/adapter/onebot/onebot11.d.ts +0 -309
- package/lib/adapter/onebot/onebot11.js +0 -1285
- package/lib/event/event.d.ts +0 -140
- package/lib/event/event.js +0 -125
- package/lib/event/message.d.ts +0 -105
- package/lib/event/message.js +0 -70
- package/lib/event/notice.d.ts +0 -49
- package/lib/event/notice.js +0 -15
- package/lib/event/request.d.ts +0 -49
- package/lib/event/request.js +0 -15
- package/lib/types/adapter.d.ts +0 -581
- package/lib/types/adapter.js +0 -1
- package/lib/types/api.js +0 -1
- package/lib/types/event.d.ts +0 -789
- package/lib/types/event.js +0 -1
- package/lib/types/onebots11.d.ts +0 -1426
- package/lib/types/onebots11.js +0 -1
- package/lib/types/reply.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { kritor } from 'kritor-proto';
|
|
2
|
-
import { logger, config, segment } from '../../utils/index.js';
|
|
3
2
|
import { listener } from '../../core/index.js';
|
|
3
|
+
import { logger, config, segment } from '../../utils/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* @extends KarinAdapter
|
|
6
6
|
*/
|
|
@@ -338,7 +338,10 @@ export default class AdapterKritor {
|
|
|
338
338
|
* 响应解码
|
|
339
339
|
*/
|
|
340
340
|
const response = kritor[type][`${cmd}Response`].decode(res.buf);
|
|
341
|
-
return
|
|
341
|
+
return {
|
|
342
|
+
message_id: response.message_id,
|
|
343
|
+
message_time: Number(response.message_time),
|
|
344
|
+
};
|
|
342
345
|
}
|
|
343
346
|
/**
|
|
344
347
|
* 撤回消息
|
|
@@ -388,7 +391,15 @@ export default class AdapterKritor {
|
|
|
388
391
|
const command = `${service}.${cmd}`;
|
|
389
392
|
const res = await this.SendApi(command, data);
|
|
390
393
|
const response = kritor[type][`${cmd}Response`].decode(res.buf);
|
|
391
|
-
|
|
394
|
+
const message = response.message;
|
|
395
|
+
return {
|
|
396
|
+
time: Number(message.time),
|
|
397
|
+
message_id: String(message.message_id),
|
|
398
|
+
message_seq: Number(message.message_seq),
|
|
399
|
+
contact: message.contact,
|
|
400
|
+
sender: message.sender,
|
|
401
|
+
elements: this.AdapterConvertKarin(message.elements),
|
|
402
|
+
};
|
|
392
403
|
}
|
|
393
404
|
/**
|
|
394
405
|
* 通过seq获取消息
|
|
@@ -452,8 +463,8 @@ export default class AdapterKritor {
|
|
|
452
463
|
const data = kritor[type][`${cmd}Request`].encode(buf).finish();
|
|
453
464
|
const command = `${service}.${cmd}`;
|
|
454
465
|
const res = await this.SendApi(command, data);
|
|
455
|
-
|
|
456
|
-
return
|
|
466
|
+
kritor[type][`${cmd}Response`].decode(res.buf);
|
|
467
|
+
return true;
|
|
457
468
|
}
|
|
458
469
|
/**
|
|
459
470
|
* 上传合并转发消息
|
|
@@ -582,7 +593,8 @@ export default class AdapterKritor {
|
|
|
582
593
|
* @param headers - 请求头
|
|
583
594
|
* @returns - 下载文件的响应
|
|
584
595
|
*/
|
|
585
|
-
async DownloadFile(
|
|
596
|
+
async DownloadFile(options) {
|
|
597
|
+
const { file, file_type, root_path = '', file_name = '', thread_cnt = 1, headers = '' } = options;
|
|
586
598
|
const service = 'CoreService';
|
|
587
599
|
const cmd = 'DownloadFile';
|
|
588
600
|
const type = 'core';
|
|
@@ -764,16 +776,16 @@ export default class AdapterKritor {
|
|
|
764
776
|
* 戳一戳用户头像
|
|
765
777
|
* @param options - 戳一戳选项
|
|
766
778
|
*/
|
|
767
|
-
async PokeMember(
|
|
779
|
+
async PokeMember(group_id, target_uid_or_uin) {
|
|
768
780
|
const service = 'GroupService';
|
|
769
781
|
const cmd = 'PokeMember';
|
|
770
782
|
const type = 'group';
|
|
771
783
|
let buf = {};
|
|
772
|
-
if (Number(
|
|
773
|
-
buf = { group_id
|
|
784
|
+
if (Number(target_uid_or_uin)) {
|
|
785
|
+
buf = { group_id, target_uin: Number(target_uid_or_uin) };
|
|
774
786
|
}
|
|
775
787
|
else {
|
|
776
|
-
buf = { group_id
|
|
788
|
+
buf = { group_id, target_uid: target_uid_or_uin };
|
|
777
789
|
}
|
|
778
790
|
const command = `${service}.${cmd}`;
|
|
779
791
|
const data = kritor[type][`${cmd}Request`].encode(buf).finish();
|
|
@@ -1120,6 +1132,13 @@ export default class AdapterKritor {
|
|
|
1120
1132
|
const response = kritor[type][`${cmd}Response`].decode(res.buf);
|
|
1121
1133
|
return response;
|
|
1122
1134
|
}
|
|
1135
|
+
CreateFolder() { throw new Error('Method not implemented.'); }
|
|
1136
|
+
RenameFolder() { throw new Error('Method not implemented.'); }
|
|
1137
|
+
DeleteFolder() { throw new Error('Method not implemented.'); }
|
|
1138
|
+
UploadFile() { throw new Error('Method not implemented.'); }
|
|
1139
|
+
DeleteFile() { throw new Error('Method not implemented.'); }
|
|
1140
|
+
GetFileSystemInfo() { throw new Error('Method not implemented.'); }
|
|
1141
|
+
GetFileList() { throw new Error('Method not implemented.'); }
|
|
1123
1142
|
async SendMessageByResId(contact, id) {
|
|
1124
1143
|
if (contact)
|
|
1125
1144
|
throw new Error('不支持的操作');
|
|
@@ -1160,7 +1179,7 @@ export default class AdapterKritor {
|
|
|
1160
1179
|
}, time * 1000);
|
|
1161
1180
|
this.grpc.write(params);
|
|
1162
1181
|
this.grpc.once(seq + '', data => {
|
|
1163
|
-
/**
|
|
1182
|
+
/** 停止计时器 */
|
|
1164
1183
|
clearTimeout(timeoutId);
|
|
1165
1184
|
data.code === 'SUCCESS' ? resolve(data) : resolve(data);
|
|
1166
1185
|
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { KarinElement, OB11Segment } from '../../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* onebot11转karin
|
|
4
|
+
* @return karin格式消息
|
|
5
|
+
*/
|
|
6
|
+
export declare function AdapterConvertKarin(data: Array<OB11Segment>): Array<KarinElement>;
|
|
7
|
+
/**
|
|
8
|
+
* karin转onebot11
|
|
9
|
+
* @param data karin格式消息
|
|
10
|
+
*/
|
|
11
|
+
export declare function KarinConvertAdapter(data: Array<KarinElement>): Array<OB11Segment>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { segment } from '../../../utils/index.js';
|
|
2
|
+
import { OB11SegmentType } from '../../../types/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* onebot11转karin
|
|
5
|
+
* @return karin格式消息
|
|
6
|
+
*/
|
|
7
|
+
export function AdapterConvertKarin(data) {
|
|
8
|
+
const elements = [];
|
|
9
|
+
for (const i of data) {
|
|
10
|
+
switch (i.type) {
|
|
11
|
+
case 'text':
|
|
12
|
+
elements.push(segment.text(i.data.text));
|
|
13
|
+
break;
|
|
14
|
+
case 'face':
|
|
15
|
+
elements.push(segment.face(Number(i.data.id)));
|
|
16
|
+
break;
|
|
17
|
+
case 'image':
|
|
18
|
+
elements.push(segment.image(i.data.url || i.data.file, { file_type: i.data.type }));
|
|
19
|
+
break;
|
|
20
|
+
case 'record':
|
|
21
|
+
elements.push(segment.voice(i.data.url || i.data.file, i.data.magic === 1));
|
|
22
|
+
break;
|
|
23
|
+
case 'video':
|
|
24
|
+
elements.push(segment.video(i.data.url || i.data.file));
|
|
25
|
+
break;
|
|
26
|
+
case 'at':
|
|
27
|
+
elements.push(segment.at(i.data.qq, i.data.qq));
|
|
28
|
+
break;
|
|
29
|
+
case 'poke':
|
|
30
|
+
elements.push(segment.poke(Number(i.data.id), Number(i.data.type)));
|
|
31
|
+
break;
|
|
32
|
+
case 'contact':
|
|
33
|
+
elements.push(segment.contact(i.data.type === 'qq' ? 'friend' : 'group', i.data.id));
|
|
34
|
+
break;
|
|
35
|
+
case 'location':
|
|
36
|
+
elements.push(segment.location(Number(i.data.lat), Number(i.data.lon), i.data.title || '', i.data.content || ''));
|
|
37
|
+
break;
|
|
38
|
+
case 'reply':
|
|
39
|
+
elements.push(segment.reply(i.data.id));
|
|
40
|
+
break;
|
|
41
|
+
case 'forward':
|
|
42
|
+
elements.push(segment.forward(i.data.id));
|
|
43
|
+
break;
|
|
44
|
+
case 'json':
|
|
45
|
+
elements.push(segment.json(i.data.data));
|
|
46
|
+
break;
|
|
47
|
+
case 'xml':
|
|
48
|
+
elements.push(segment.xml(i.data.data));
|
|
49
|
+
break;
|
|
50
|
+
default: {
|
|
51
|
+
elements.push(segment.text(JSON.stringify(i)));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return elements;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* karin转onebot11
|
|
59
|
+
* @param data karin格式消息
|
|
60
|
+
*/
|
|
61
|
+
export function KarinConvertAdapter(data) {
|
|
62
|
+
const elements = [];
|
|
63
|
+
for (const i of data) {
|
|
64
|
+
const type = i.type;
|
|
65
|
+
switch (i.type) {
|
|
66
|
+
case OB11SegmentType.Text:
|
|
67
|
+
elements.push({ type, data: { text: i.text } });
|
|
68
|
+
break;
|
|
69
|
+
case OB11SegmentType.Face:
|
|
70
|
+
elements.push({ type, data: { id: i.id } });
|
|
71
|
+
break;
|
|
72
|
+
case OB11SegmentType.At:
|
|
73
|
+
elements.push({ type, data: { qq: String(i.uid || i.uin) } });
|
|
74
|
+
break;
|
|
75
|
+
case OB11SegmentType.Reply:
|
|
76
|
+
elements.push({ type, data: { id: i.message_id } });
|
|
77
|
+
break;
|
|
78
|
+
case OB11SegmentType.Image:
|
|
79
|
+
case OB11SegmentType.Video:
|
|
80
|
+
case OB11SegmentType.File: {
|
|
81
|
+
elements.push({ type, data: { file: i.file } });
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case OB11SegmentType.Xml: {
|
|
85
|
+
elements.push({ type, data: { data: i.data } });
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
case OB11SegmentType.Json: {
|
|
89
|
+
elements.push({ type, data: { data: i.data } });
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case OB11SegmentType.Forward: {
|
|
93
|
+
elements.push({ type, data: { id: i.res_id } });
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case OB11SegmentType.Record: {
|
|
97
|
+
elements.push({ type: OB11SegmentType.Record, data: { file: i.file, magic: i.magic || false } });
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case OB11SegmentType.Music: {
|
|
101
|
+
if (i.id) {
|
|
102
|
+
elements.push({ type: 'music', data: { type: i.platform, id: i.id } });
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const { url, audio, title, author, pic } = i;
|
|
106
|
+
elements.push({ type: 'music', data: { type: 'custom', url, audio, title, content: author, image: pic } });
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
case 'button': {
|
|
111
|
+
elements.push({ type: 'button', data: i.data });
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 'markdown': {
|
|
115
|
+
const { type, ...data } = i;
|
|
116
|
+
elements.push({ type, data: { ...data } });
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case 'rows': {
|
|
120
|
+
for (const val of i.rows) {
|
|
121
|
+
elements.push({ type: 'button', data: val.data });
|
|
122
|
+
}
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case OB11SegmentType.Poke: {
|
|
126
|
+
elements.push({ type, data: { type: i.poke_type, id: i.id } });
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'bubble_face': {
|
|
130
|
+
elements.push({ type: 'bubble_face', data: { id: i.id, count: i.count } });
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case OB11SegmentType.Contact: {
|
|
134
|
+
elements.push({ type, data: { type: i.scene, id: i.peer } });
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
case OB11SegmentType.Location: {
|
|
138
|
+
elements.push({ type, data: { lat: i.lat, lon: i.lon, title: i.title, content: i.address } });
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
case 'long_msg':
|
|
142
|
+
case 'basketball':
|
|
143
|
+
case 'dice':
|
|
144
|
+
case 'market_face':
|
|
145
|
+
case 'rps': {
|
|
146
|
+
elements.push({ type: i.type, data: { id: i.id } });
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
case 'gift': {
|
|
150
|
+
elements.push({ type: 'gift', data: { qq: i.qq, id: i.id } });
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case 'share': {
|
|
154
|
+
elements.push({ type: 'share', data: { url: i.url, title: i.title, content: i.content, image: i.image } });
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case 'weather': {
|
|
158
|
+
elements.push({ type: 'weather', data: { city: i.city, type: i.type } });
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
default: {
|
|
162
|
+
elements.push(i);
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return elements;
|
|
168
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AdapterOneBot11 } from './index.js';
|
|
2
|
+
import { OB11EventAll, OB11MessageEvent, OB11MetaEvent, OB11NoticeEvent, OB11RequestEvent } from '../../../types/index.js';
|
|
3
|
+
export declare class OB11Event {
|
|
4
|
+
adapter: AdapterOneBot11;
|
|
5
|
+
constructor(adapter: AdapterOneBot11);
|
|
6
|
+
/**
|
|
7
|
+
* 处理事件
|
|
8
|
+
* - @param data ob11相关标准数据
|
|
9
|
+
*/
|
|
10
|
+
event(data: OB11EventAll): void;
|
|
11
|
+
/**
|
|
12
|
+
* 元事件
|
|
13
|
+
*/
|
|
14
|
+
metaEvent(data: OB11MetaEvent): void;
|
|
15
|
+
/**
|
|
16
|
+
* 消息事件
|
|
17
|
+
*/
|
|
18
|
+
messageEvent(data: OB11MessageEvent): void;
|
|
19
|
+
/**
|
|
20
|
+
* 通知事件
|
|
21
|
+
*/
|
|
22
|
+
noticeEvent(data: OB11NoticeEvent): void;
|
|
23
|
+
/** 请求事件 */
|
|
24
|
+
requestEvent(data: OB11RequestEvent): void;
|
|
25
|
+
}
|