node-karin 0.0.3

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 (107) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +57 -0
  3. package/config/defSet/App.yaml +37 -0
  4. package/config/defSet/config.yaml +43 -0
  5. package/config/defSet/group.yaml +18 -0
  6. package/config/defSet/pm2.yaml +21 -0
  7. package/config/defSet/redis.yaml +18 -0
  8. package/config/defSet/server.yaml +42 -0
  9. package/config/view/App.yaml +74 -0
  10. package/config/view/config.yaml +100 -0
  11. package/config/view/group.yaml +62 -0
  12. package/config/view/pm2.yaml +41 -0
  13. package/config/view/redis.yaml +25 -0
  14. package/config/view/server.yaml +93 -0
  15. package/lib/adapter/onebot/onebot11.d.ts +430 -0
  16. package/lib/adapter/onebot/onebot11.js +1302 -0
  17. package/lib/core/init.d.ts +0 -0
  18. package/lib/core/init.js +4 -0
  19. package/lib/core/karin.d.ts +72 -0
  20. package/lib/core/karin.js +51 -0
  21. package/lib/core/listener.d.ts +121 -0
  22. package/lib/core/listener.js +188 -0
  23. package/lib/core/plugin.app.d.ts +15 -0
  24. package/lib/core/plugin.app.js +18 -0
  25. package/lib/core/plugin.d.ts +182 -0
  26. package/lib/core/plugin.js +138 -0
  27. package/lib/core/plugin.loader.d.ts +149 -0
  28. package/lib/core/plugin.loader.js +462 -0
  29. package/lib/core/server.d.ts +26 -0
  30. package/lib/core/server.js +213 -0
  31. package/lib/db/level.d.ts +20 -0
  32. package/lib/db/level.js +38 -0
  33. package/lib/db/redis.d.ts +41 -0
  34. package/lib/db/redis.js +137 -0
  35. package/lib/db/redis_level.d.ts +113 -0
  36. package/lib/db/redis_level.js +290 -0
  37. package/lib/event/event.d.ts +138 -0
  38. package/lib/event/event.handler.d.ts +29 -0
  39. package/lib/event/event.handler.js +142 -0
  40. package/lib/event/event.js +120 -0
  41. package/lib/event/message.d.ts +102 -0
  42. package/lib/event/message.handler.d.ts +25 -0
  43. package/lib/event/message.handler.js +240 -0
  44. package/lib/event/message.js +70 -0
  45. package/lib/event/notice.d.ts +49 -0
  46. package/lib/event/notice.js +15 -0
  47. package/lib/event/request.d.ts +49 -0
  48. package/lib/event/request.js +15 -0
  49. package/lib/event/review.handler.d.ts +54 -0
  50. package/lib/event/review.handler.js +382 -0
  51. package/lib/index.d.ts +23 -0
  52. package/lib/index.js +40 -0
  53. package/lib/renderer/app.d.ts +53 -0
  54. package/lib/renderer/app.js +93 -0
  55. package/lib/renderer/base.d.ts +30 -0
  56. package/lib/renderer/base.js +71 -0
  57. package/lib/renderer/client.d.ts +30 -0
  58. package/lib/renderer/client.js +159 -0
  59. package/lib/renderer/http.d.ts +19 -0
  60. package/lib/renderer/http.js +51 -0
  61. package/lib/renderer/server.d.ts +42 -0
  62. package/lib/renderer/server.js +112 -0
  63. package/lib/renderer/wormhole.d.ts +1 -0
  64. package/lib/renderer/wormhole.js +154 -0
  65. package/lib/types/adapter.d.ts +575 -0
  66. package/lib/types/adapter.js +1 -0
  67. package/lib/types/config.d.ts +327 -0
  68. package/lib/types/config.js +1 -0
  69. package/lib/types/element.d.ts +576 -0
  70. package/lib/types/element.js +1 -0
  71. package/lib/types/index.d.ts +8 -0
  72. package/lib/types/index.js +8 -0
  73. package/lib/types/logger.d.ts +109 -0
  74. package/lib/types/logger.js +1 -0
  75. package/lib/types/onebots11.d.ts +1371 -0
  76. package/lib/types/onebots11.js +1 -0
  77. package/lib/types/plugin.d.ts +282 -0
  78. package/lib/types/plugin.js +1 -0
  79. package/lib/types/render.d.ts +111 -0
  80. package/lib/types/render.js +1 -0
  81. package/lib/types/reply.d.ts +40 -0
  82. package/lib/types/reply.js +1 -0
  83. package/lib/types/types.d.ts +898 -0
  84. package/lib/types/types.js +1 -0
  85. package/lib/utils/YamlEditor.d.ts +62 -0
  86. package/lib/utils/YamlEditor.js +208 -0
  87. package/lib/utils/button.d.ts +49 -0
  88. package/lib/utils/button.js +79 -0
  89. package/lib/utils/common.d.ts +123 -0
  90. package/lib/utils/common.js +413 -0
  91. package/lib/utils/config.d.ts +72 -0
  92. package/lib/utils/config.js +254 -0
  93. package/lib/utils/exec.d.ts +22 -0
  94. package/lib/utils/exec.js +36 -0
  95. package/lib/utils/ffmpeg.d.ts +12 -0
  96. package/lib/utils/ffmpeg.js +25 -0
  97. package/lib/utils/handler.d.ts +76 -0
  98. package/lib/utils/handler.js +102 -0
  99. package/lib/utils/logger.d.ts +3 -0
  100. package/lib/utils/logger.js +104 -0
  101. package/lib/utils/segment.d.ts +276 -0
  102. package/lib/utils/segment.js +448 -0
  103. package/lib/utils/update.d.ts +69 -0
  104. package/lib/utils/update.js +151 -0
  105. package/lib/utils/updateVersion.d.ts +33 -0
  106. package/lib/utils/updateVersion.js +145 -0
  107. package/package.json +92 -0
@@ -0,0 +1,575 @@
1
+ /// <reference types="node" />
2
+ import { WebSocket } from 'ws';
3
+ import { IncomingMessage } from 'http';
4
+ import { KarinElement, KarinNodeElement } from './element.js';
5
+ import { contact, PushMessageBody, EssenceMessageBody, FriendInfo, GroupInfo, GroupMemberInfo, GroupHonorInfo } from './types.js';
6
+ export interface KarinAdapter {
7
+ /**
8
+ * - 适配器版本信息
9
+ */
10
+ version: {
11
+ /**
12
+ * - 适配器名称
13
+ */
14
+ name: string;
15
+ /**
16
+ * - 适配器名称
17
+ * @deprecated 请使用`version.name`
18
+ */
19
+ app_name: string;
20
+ /**
21
+ * - 适配器版本
22
+ */
23
+ version: string;
24
+ };
25
+ /**
26
+ * - 账号信息
27
+ */
28
+ account: {
29
+ /**
30
+ * - 账号uid
31
+ */
32
+ uid: string;
33
+ /**
34
+ * - 账号uin
35
+ */
36
+ uin: string;
37
+ /**
38
+ * - 账号名 不存在则是空字符串
39
+ */
40
+ name: string;
41
+ };
42
+ /**
43
+ * - 适配器信息
44
+ */
45
+ adapter: {
46
+ /**
47
+ * - 适配器ID
48
+ */
49
+ id: 'QQ' | 'WeChat' | 'Telegram' | 'QQBot' | string;
50
+ /**
51
+ * - 适配器名称
52
+ */
53
+ name: 'ICQQ' | 'OneBot11' | 'OntBot12' | 'Kritor' | string;
54
+ /**
55
+ * - 适配器类型
56
+ */
57
+ type: 'internal' | 'grpc' | 'http' | 'ws' | 'render';
58
+ /**
59
+ * - 适配器子类型
60
+ */
61
+ sub_type: 'server' | 'client' | 'internal';
62
+ /**
63
+ * - 连接时间
64
+ */
65
+ start_time: number;
66
+ /**
67
+ * - 适配器连接地址
68
+ * - 仅在`http`、`ws`、`grpc`有效 比如 ws://127.0.0.1:7000
69
+ */
70
+ connect?: string;
71
+ };
72
+ /**
73
+ * 获取Bot自身UID
74
+ */
75
+ get self_id(): string;
76
+ /**
77
+ * 专属当前Bot的日志打印方法
78
+ * @param level - 日志等级
79
+ * @param args - 日志内容
80
+ */
81
+ logger(level: 'info' | 'error' | 'trace' | 'debug' | 'mark' | 'warn' | 'fatal', ...args: any[]): void;
82
+ /**
83
+ * - 可选方法 仅ws有效 在注册适配器后 如果有符合的path则会调用此方法
84
+ * - @param socket - WebSocket实例
85
+ * - @param request - http请求实例
86
+ */
87
+ server?(socket: WebSocket, request: IncomingMessage): void;
88
+ /**
89
+ * - 可选方法 仅ws有效 处理正向ws连接
90
+ * - @param connect - 连接地址
91
+ */
92
+ client?(connect: string): void;
93
+ /**
94
+ * - 获取头像url
95
+ */
96
+ getAvatarUrl(
97
+ /**
98
+ * - 用户ID
99
+ */
100
+ user_id: string,
101
+ /**
102
+ * - 头像大小,默认需要为`0`,请开发者注意
103
+ */
104
+ size?: number): string;
105
+ /**
106
+ * - 获取群头像
107
+ */
108
+ getGroupAvatar(
109
+ /**
110
+ * - 群号
111
+ */
112
+ group_id: string,
113
+ /**
114
+ * - 头像大小,默认`0`
115
+ */
116
+ size?: number,
117
+ /**
118
+ * - 历史头像记录,默认`0`,若要获取历史群头像则填写1,2,3...
119
+ */
120
+ history?: number): string;
121
+ /**
122
+ * - 发送消息
123
+ */
124
+ SendMessage(
125
+ /**
126
+ * - 联系人信息
127
+ */
128
+ contact: contact,
129
+ /**
130
+ * - 消息元素
131
+ */
132
+ elements: Array<KarinElement>,
133
+ /**
134
+ * 重试次数 默认为1
135
+ */
136
+ retry_count?: number): Promise<{
137
+ /**
138
+ * - 消息ID
139
+ */
140
+ message_id: string;
141
+ }>;
142
+ /**
143
+ * - 上传合并转发消息返回一个资源ID
144
+ * - 这一块会比较特殊,目前经测试有shamrock、Lagrange.OneBot支持这个功能(其他未测试)
145
+ */
146
+ UploadForwardMessage(
147
+ /**
148
+ * - 联系人信息
149
+ */
150
+ contact: contact,
151
+ /**
152
+ * - 转发消息元素
153
+ */
154
+ elements: Array<KarinNodeElement>): Promise<{
155
+ /**
156
+ * - 资源ID
157
+ */
158
+ res_id: string;
159
+ }>;
160
+ /**
161
+ * - 通过资源ID发送转发消息
162
+ */
163
+ SendMessageByResId(
164
+ /**
165
+ * - 联系人信息
166
+ */
167
+ contact: contact,
168
+ /**
169
+ * - 资源ID
170
+ */
171
+ res_id: string): Promise<{
172
+ /**
173
+ * - 消息ID
174
+ */
175
+ message_id: string;
176
+ /**
177
+ * - 消息发送成功时间
178
+ */
179
+ message_time: number;
180
+ }>;
181
+ /**
182
+ * - 撤回消息
183
+ */
184
+ RecallMessage(
185
+ /**
186
+ * - 联系人信息
187
+ */
188
+ contact: contact,
189
+ /**
190
+ * - 消息ID
191
+ */
192
+ message_id: string): Promise<void>;
193
+ /**
194
+ * - 获取消息
195
+ */
196
+ GetMessage(
197
+ /**
198
+ * - 联系人信息
199
+ */
200
+ contact: contact,
201
+ /**
202
+ * - 消息ID
203
+ */
204
+ message_id: string): Promise<object>;
205
+ /**
206
+ * - 获取msg_id获取历史消息
207
+ */
208
+ GetHistoryMessage(
209
+ /**
210
+ * - 联系人信息
211
+ */
212
+ contact: contact,
213
+ /**
214
+ * - 起始消息ID
215
+ */
216
+ start_message_id: string,
217
+ /**
218
+ * - 获取消息数量 默认为1
219
+ */
220
+ count: number): Promise<Array<PushMessageBody> | void>;
221
+ /**
222
+ * - 下载合并转发消息
223
+ */
224
+ DownloadForwardMessage(
225
+ /**
226
+ * - 资源ID
227
+ */
228
+ res_id: string): Promise<Array<PushMessageBody> | void>;
229
+ /**
230
+ * - 获取精华消息
231
+ */
232
+ GetEssenceMessageList(
233
+ /**
234
+ * - 群ID
235
+ */
236
+ group_id: string,
237
+ /**
238
+ * - 页码
239
+ */
240
+ page: number,
241
+ /**
242
+ * - 每页数量
243
+ */
244
+ page_size: number): Promise<EssenceMessageBody | void>;
245
+ /**
246
+ * - 设置精华消息
247
+ */
248
+ SetEssenceMessage(
249
+ /**
250
+ * - 群ID
251
+ */
252
+ group_id: string,
253
+ /**
254
+ * - 消息ID
255
+ */
256
+ message_id: string): Promise<void>;
257
+ /**
258
+ * - 删除精华消息
259
+ */
260
+ DeleteEssenceMessage(
261
+ /**
262
+ * - 群ID
263
+ */
264
+ group_id: string,
265
+ /**
266
+ * - 消息ID
267
+ */
268
+ message_id: string): Promise<void>;
269
+ /**
270
+ * - 发送好友赞
271
+ */
272
+ VoteUser(
273
+ /**
274
+ * - 好友UID或者UIN(QQ) 任选其一提供即可
275
+ */
276
+ target_uid_or_uin: string,
277
+ /**
278
+ * - 赞的次数,默认为10
279
+ */
280
+ vote_count: number): Promise<void>;
281
+ /**
282
+ * - 群踢人
283
+ */
284
+ KickMember(
285
+ /**
286
+ * - 群ID
287
+ */
288
+ group_id: string,
289
+ /**
290
+ * - 被踢出目标的UID或者UIN 任选其一
291
+ */
292
+ target_uid_or_uin: string,
293
+ /**
294
+ * 是否拒绝再次申请,默认为false
295
+ */
296
+ reject_add_request?: boolean,
297
+ /**
298
+ * 踢出原因,可选
299
+ */
300
+ kick_reason?: string): Promise<void>;
301
+ /**
302
+ * - 禁言用户
303
+ */
304
+ BanMember(
305
+ /**
306
+ * - 群ID
307
+ */
308
+ group_id: string,
309
+ /**
310
+ * - 被禁言目标的UID或者UIN 任选其一
311
+ */
312
+ target_uid_or_uin: string,
313
+ /**
314
+ * - 禁言时长 单位:秒
315
+ */
316
+ duration: number): Promise<void>;
317
+ /**
318
+ * - 群全员禁言
319
+ */
320
+ SetGroupWholeBan(
321
+ /**
322
+ * - 群ID
323
+ */
324
+ group_id: string,
325
+ /**
326
+ * - 是否开启全员禁言
327
+ */
328
+ enable: boolean): Promise<void>;
329
+ /**
330
+ * - 设置群管理员
331
+ */
332
+ SetGroupAdmin(
333
+ /**
334
+ * - 群ID
335
+ */
336
+ group_id: string,
337
+ /**
338
+ * - 目标用户的UID或者UIN 任选其一
339
+ */
340
+ target_uid_or_uin: string,
341
+ /**
342
+ * - 是否设置为管理员
343
+ */
344
+ is_admin: boolean): Promise<void>;
345
+ /**
346
+ * - 修改群名片
347
+ */
348
+ ModifyMemberCard(
349
+ /**
350
+ * - 群ID
351
+ */
352
+ group_id: string,
353
+ /**
354
+ * - 目标用户的UID或者UIN 任选其一
355
+ */
356
+ target_uid_or_uin: string,
357
+ /**
358
+ * - 新的群名片
359
+ */
360
+ card: string): Promise<void>;
361
+ /**
362
+ * - 设置群名
363
+ */
364
+ ModifyGroupName(
365
+ /**
366
+ * - 群ID
367
+ */
368
+ group_id: string,
369
+ /**
370
+ * - 新的群名
371
+ */
372
+ group_name: string): Promise<void>;
373
+ /**
374
+ * - 退出群组
375
+ */
376
+ LeaveGroup(
377
+ /**
378
+ * - 群ID
379
+ */
380
+ group_id: string,
381
+ /**
382
+ * - 如果Bot是群主,是否解散群
383
+ * - 此项属于拓展选项,Kritor标准没有,仅在OneBot11中有效
384
+ */
385
+ is_dismiss: boolean): Promise<void>;
386
+ /**
387
+ * - 设置群专属头衔
388
+ */
389
+ SetGroupUniqueTitle(
390
+ /**
391
+ * - 群ID
392
+ */
393
+ group_id: string,
394
+ /**
395
+ * - 目标用户的UID或者UIN 任选其一
396
+ */
397
+ target_uid_or_uin: string,
398
+ /**
399
+ * - 专属头衔
400
+ */
401
+ unique_title: string): Promise<void>;
402
+ /**
403
+ * - 获取登录账号信息
404
+ */
405
+ GetCurrentAccount(): Promise<{
406
+ /**
407
+ * - 登录账户UID
408
+ */
409
+ account_uid: string;
410
+ /**
411
+ * - 登录账户UIN
412
+ */
413
+ account_uin: string;
414
+ /**
415
+ * - 登录账户名称
416
+ */
417
+ account_name: string;
418
+ }>;
419
+ /**
420
+ * - 获取陌生人信息 不支持批量获取
421
+ * - 此接口的请求参数需要明确是target_uid还是target_uin,请开发者注意
422
+ */
423
+ GetStrangerProfileCard(
424
+ /**
425
+ * - 用户UID或者UIN 任选其一
426
+ */
427
+ target_uid_or_uin: string[]): Promise<Array<FriendInfo>>;
428
+ /**
429
+ * - 获取好友列表
430
+ */
431
+ GetFriendList(
432
+ /**
433
+ * - 是否刷新好友列表
434
+ */
435
+ refresh?: boolean): Promise<Array<FriendInfo>>;
436
+ /**
437
+ * - 获取群信息
438
+ */
439
+ GetGroupInfo(
440
+ /**
441
+ * - 群ID
442
+ */
443
+ group_id: string,
444
+ /**
445
+ * - 是否刷新缓存
446
+ */
447
+ no_cache?: boolean): Promise<GroupInfo>;
448
+ /**
449
+ * - 获取群列表
450
+ */
451
+ GetGroupList(
452
+ /**
453
+ * - 是否刷新好友列表
454
+ */
455
+ refresh?: boolean): Promise<Array<GroupInfo>>;
456
+ /**
457
+ * - 获取群成员信息
458
+ * - 此接口在非QQ平台上很难获取到标准信息,因此返回的数据可能会有所不同
459
+ */
460
+ GetGroupMemberInfo(
461
+ /**
462
+ * - 群ID
463
+ */
464
+ group_id: string,
465
+ /**
466
+ * - 目标用户的UID或者UIN 任选其一
467
+ */
468
+ target_uid_or_uin: string,
469
+ /**
470
+ * - 是否刷新缓存
471
+ */
472
+ refresh?: boolean): Promise<GroupMemberInfo>;
473
+ /**
474
+ * - 获取群成员列表
475
+ */
476
+ GetGroupMemberList(
477
+ /**
478
+ * - 群ID
479
+ */
480
+ group_id: string,
481
+ /**
482
+ * - 是否刷新缓存
483
+ */
484
+ refresh?: boolean): Promise<Array<GroupMemberInfo>>;
485
+ /**
486
+ * - 获取群荣誉信息
487
+ */
488
+ GetGroupHonor(
489
+ /**
490
+ * - 群ID
491
+ */
492
+ group_id: string,
493
+ /**
494
+ * - 是否刷新缓存
495
+ */
496
+ refresh?: boolean): Promise<Array<GroupHonorInfo>>;
497
+ /**
498
+ * - 获取版本信息
499
+ */
500
+ GetVersion(): Promise<{
501
+ version: string;
502
+ app_name: string;
503
+ }>;
504
+ /**
505
+ * - 设置好友请求结果
506
+ */
507
+ SetFriendApplyResult(
508
+ /**
509
+ * - 请求ID
510
+ */
511
+ request_id: string,
512
+ /**
513
+ * - 是否同意
514
+ */
515
+ is_approve: boolean,
516
+ /**
517
+ * - 好友备注 同意时有效
518
+ */
519
+ remark?: string): Promise<void>;
520
+ /**
521
+ * - 设置申请加入群请求结果
522
+ */
523
+ SetGroupApplyResultRequest(
524
+ /**
525
+ * - 请求ID
526
+ */
527
+ request_id: string,
528
+ /**
529
+ * - 是否同意
530
+ */
531
+ is_approve: boolean,
532
+ /**
533
+ * - 拒绝理由 拒绝时有效
534
+ */
535
+ deny_reason?: string): Promise<void>;
536
+ /**
537
+ * - 设置邀请加入群请求结果
538
+ */
539
+ SetInvitedJoinGroupResult(
540
+ /**
541
+ * - 请求ID
542
+ */
543
+ request_id: string, is_approve: boolean): Promise<void>;
544
+ /**
545
+ * 发送合并转发消息
546
+ * @param contact 联系人信息
547
+ * @param elements 消息元素
548
+ * @return {Promise<{message_id?}>}
549
+ */
550
+ sendForwardMessage(contact: contact, elements: Array<KarinNodeElement>): Promise<{
551
+ message_id?: string;
552
+ }>;
553
+ /**
554
+ * 对消息进行表情回应
555
+ * @param Contact - 联系人信息
556
+ * @param message_id - 消息ID
557
+ * @param face_id - 表情ID
558
+ */
559
+ ReactMessageWithEmojiRequest(contact: contact, message_id: string, face_id: number, is_set: boolean): Promise<void>;
560
+ /**
561
+ * 上传群文件
562
+ * @param group_id - 群号
563
+ * @param file - 本地文件绝对路径
564
+ * @param name - 文件名称 必须提供
565
+ * @param folder - 父目录ID 不提供则上传到根目录
566
+ */
567
+ UploadGroupFile(group_id: string, file: string, name: string, folder?: string): Promise<void>;
568
+ /**
569
+ * 上传私聊文件
570
+ * @param user_id - 用户ID
571
+ * @param file - 本地文件绝对路径
572
+ * @param name - 文件名称 必须提供
573
+ */
574
+ UploadPrivateFile(user_id: string, file: string, name: string): Promise<void>;
575
+ }
@@ -0,0 +1 @@
1
+ export {}