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.
Files changed (101) hide show
  1. package/lib/adapter/index.d.ts +1 -1
  2. package/lib/adapter/index.js +1 -1
  3. package/lib/adapter/input/index.d.ts +16 -3
  4. package/lib/adapter/input/index.js +52 -38
  5. package/lib/adapter/kritor/grpc.d.ts +3 -2
  6. package/lib/adapter/kritor/grpc.js +80 -64
  7. package/lib/adapter/kritor/index.d.ts +38 -18
  8. package/lib/adapter/kritor/index.js +30 -11
  9. package/lib/adapter/onebot/11/convert.d.ts +11 -0
  10. package/lib/adapter/onebot/11/convert.js +168 -0
  11. package/lib/adapter/onebot/11/event.d.ts +25 -0
  12. package/lib/adapter/onebot/11/event.js +425 -0
  13. package/lib/adapter/onebot/11/index.d.ts +506 -0
  14. package/lib/adapter/onebot/11/index.js +1047 -0
  15. package/lib/cli/init.js +5 -0
  16. package/lib/core/karin.d.ts +3 -4
  17. package/lib/core/karin.js +3 -2
  18. package/lib/core/listener.d.ts +2 -2
  19. package/lib/core/listener.js +2 -2
  20. package/lib/core/plugin.app.js +2 -1
  21. package/lib/core/plugin.d.ts +4 -4
  22. package/lib/core/plugin.js +2 -1
  23. package/lib/core/plugin.loader.d.ts +3 -3
  24. package/lib/core/plugin.loader.js +2 -1
  25. package/lib/core/server.js +3 -3
  26. package/lib/event/event.handler.d.ts +5 -5
  27. package/lib/event/event.handler.js +6 -5
  28. package/lib/event/index.d.ts +0 -4
  29. package/lib/event/index.js +0 -4
  30. package/lib/event/message.handler.d.ts +3 -3
  31. package/lib/event/notice.handler.d.ts +3 -3
  32. package/lib/event/notice.handler.js +17 -16
  33. package/lib/event/request.handler.d.ts +3 -3
  34. package/lib/event/request.handler.js +4 -3
  35. package/lib/event/review.handler.d.ts +7 -8
  36. package/lib/index.js +1 -1
  37. package/lib/types/adapter/adapter.d.ts +564 -0
  38. package/lib/types/adapter/adapter.js +1 -0
  39. package/lib/types/{api.d.ts → adapter/api.d.ts} +103 -3
  40. package/lib/types/adapter/api.js +1 -0
  41. package/lib/types/element.d.ts +5 -4
  42. package/lib/types/event/contact.d.ts +28 -0
  43. package/lib/types/event/contact.js +13 -0
  44. package/lib/types/event/event.d.ts +390 -0
  45. package/lib/types/event/event.js +234 -0
  46. package/lib/types/event/index.d.ts +12 -0
  47. package/lib/types/event/index.js +7 -0
  48. package/lib/types/event/message.d.ts +104 -0
  49. package/lib/types/event/message.js +72 -0
  50. package/lib/types/event/notice.d.ts +513 -0
  51. package/lib/types/event/notice.js +52 -0
  52. package/lib/types/{reply.d.ts → event/reply.d.ts} +2 -2
  53. package/lib/types/event/reply.js +1 -0
  54. package/lib/types/event/request.d.ts +126 -0
  55. package/lib/types/event/request.js +52 -0
  56. package/lib/types/event/sender.d.ts +44 -0
  57. package/lib/types/event/sender.js +22 -0
  58. package/lib/types/index.d.ts +6 -5
  59. package/lib/types/index.js +6 -5
  60. package/lib/types/onebot11/api.d.ts +53 -0
  61. package/lib/types/onebot11/api.js +54 -0
  62. package/lib/types/onebot11/event.d.ts +619 -0
  63. package/lib/types/onebot11/event.js +56 -0
  64. package/lib/types/onebot11/index.d.ts +6 -0
  65. package/lib/types/onebot11/index.js +6 -0
  66. package/lib/types/onebot11/params.d.ts +609 -0
  67. package/lib/types/onebot11/params.js +7 -0
  68. package/lib/types/onebot11/response.d.ts +516 -0
  69. package/lib/types/onebot11/response.js +1 -0
  70. package/lib/types/onebot11/segment.d.ts +268 -0
  71. package/lib/types/onebot11/segment.js +30 -0
  72. package/lib/types/onebot11/sender.d.ts +59 -0
  73. package/lib/types/onebot11/sender.js +1 -0
  74. package/lib/types/plugin.d.ts +13 -9
  75. package/lib/utils/button.d.ts +2 -2
  76. package/lib/utils/common.d.ts +2 -2
  77. package/lib/utils/config.js +3 -3
  78. package/lib/utils/handler.d.ts +2 -2
  79. package/lib/utils/handler.js +1 -1
  80. package/lib/utils/init.d.ts +1 -1
  81. package/lib/utils/init.js +2 -1
  82. package/lib/utils/segment.d.ts +2 -2
  83. package/package.json +1 -1
  84. package/lib/adapter/onebot/onebot11.d.ts +0 -309
  85. package/lib/adapter/onebot/onebot11.js +0 -1285
  86. package/lib/event/event.d.ts +0 -140
  87. package/lib/event/event.js +0 -125
  88. package/lib/event/message.d.ts +0 -105
  89. package/lib/event/message.js +0 -70
  90. package/lib/event/notice.d.ts +0 -49
  91. package/lib/event/notice.js +0 -15
  92. package/lib/event/request.d.ts +0 -49
  93. package/lib/event/request.js +0 -15
  94. package/lib/types/adapter.d.ts +0 -581
  95. package/lib/types/adapter.js +0 -1
  96. package/lib/types/api.js +0 -1
  97. package/lib/types/event.d.ts +0 -789
  98. package/lib/types/event.js +0 -1
  99. package/lib/types/onebots11.d.ts +0 -1426
  100. package/lib/types/onebots11.js +0 -1
  101. 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 response;
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
- return response;
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
- const response = kritor[type][`${cmd}Response`].decode(res.buf);
456
- return response;
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(file, file_type, root_path, file_name, thread_cnt, headers) {
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(options) {
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(options.target_uin)) {
773
- buf = { group_id: options.group_id, target_uin: Number(options.target_uin) };
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: options.group_id, target_uid: options.target_uid };
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
+ }