node-karin 0.6.18 → 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 +35 -18
  8. package/lib/adapter/kritor/index.js +26 -10
  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 +10 -11
  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
  */
@@ -391,7 +391,15 @@ export default class AdapterKritor {
391
391
  const command = `${service}.${cmd}`;
392
392
  const res = await this.SendApi(command, data);
393
393
  const response = kritor[type][`${cmd}Response`].decode(res.buf);
394
- 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
+ };
395
403
  }
396
404
  /**
397
405
  * 通过seq获取消息
@@ -455,8 +463,8 @@ export default class AdapterKritor {
455
463
  const data = kritor[type][`${cmd}Request`].encode(buf).finish();
456
464
  const command = `${service}.${cmd}`;
457
465
  const res = await this.SendApi(command, data);
458
- const response = kritor[type][`${cmd}Response`].decode(res.buf);
459
- return response;
466
+ kritor[type][`${cmd}Response`].decode(res.buf);
467
+ return true;
460
468
  }
461
469
  /**
462
470
  * 上传合并转发消息
@@ -585,7 +593,8 @@ export default class AdapterKritor {
585
593
  * @param headers - 请求头
586
594
  * @returns - 下载文件的响应
587
595
  */
588
- 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;
589
598
  const service = 'CoreService';
590
599
  const cmd = 'DownloadFile';
591
600
  const type = 'core';
@@ -767,16 +776,16 @@ export default class AdapterKritor {
767
776
  * 戳一戳用户头像
768
777
  * @param options - 戳一戳选项
769
778
  */
770
- async PokeMember(options) {
779
+ async PokeMember(group_id, target_uid_or_uin) {
771
780
  const service = 'GroupService';
772
781
  const cmd = 'PokeMember';
773
782
  const type = 'group';
774
783
  let buf = {};
775
- if (Number(options.target_uin)) {
776
- 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) };
777
786
  }
778
787
  else {
779
- buf = { group_id: options.group_id, target_uid: options.target_uid };
788
+ buf = { group_id, target_uid: target_uid_or_uin };
780
789
  }
781
790
  const command = `${service}.${cmd}`;
782
791
  const data = kritor[type][`${cmd}Request`].encode(buf).finish();
@@ -1123,6 +1132,13 @@ export default class AdapterKritor {
1123
1132
  const response = kritor[type][`${cmd}Response`].decode(res.buf);
1124
1133
  return response;
1125
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.'); }
1126
1142
  async SendMessageByResId(contact, id) {
1127
1143
  if (contact)
1128
1144
  throw new Error('不支持的操作');
@@ -1163,7 +1179,7 @@ export default class AdapterKritor {
1163
1179
  }, time * 1000);
1164
1180
  this.grpc.write(params);
1165
1181
  this.grpc.once(seq + '', data => {
1166
- /** 停止监听器 */
1182
+ /** 停止计时器 */
1167
1183
  clearTimeout(timeoutId);
1168
1184
  data.code === 'SUCCESS' ? resolve(data) : resolve(data);
1169
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
+ }