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,138 @@
1
+ /**
2
+ * 插件基类
3
+ */
4
+ export default class Plugin {
5
+ e
6
+ init
7
+ accept
8
+ replyCallback
9
+ /**
10
+ * @param name - 插件名称
11
+ */
12
+ name
13
+ /**
14
+ * @param dsc - 插件描述
15
+ * @deprecated 请使用desc
16
+ */
17
+ dsc
18
+ /**
19
+ * @param desc - 插件描述
20
+ */
21
+ desc
22
+ /**
23
+ * @param event - 监听事件
24
+ */
25
+ event
26
+ /**
27
+ * @param priority - 优先级 默认5000
28
+ */
29
+ priority
30
+ /**
31
+ * @param task - 定时任务
32
+ */
33
+ task
34
+ /**
35
+ * @param rule - 命令规则
36
+ */
37
+ rule
38
+ /**
39
+ * @param button - 按钮
40
+ */
41
+ button
42
+ /**
43
+ * @param handler - handler
44
+ */
45
+ handler
46
+ /**
47
+ * @param userId - 用户ID 一般上下文使用
48
+ */
49
+ userId
50
+ /**
51
+ * @param timeout - 上下文超时
52
+ */
53
+ timeout
54
+ constructor ({ name, dsc = name, desc = name, event = 'message', priority = 5000, task = [], rule = [], handler = [], button = [] }) {
55
+ this.name = name
56
+ this.dsc = dsc
57
+ this.desc = desc
58
+ this.event = event
59
+ this.priority = priority
60
+ this.task = task
61
+ this.rule = rule
62
+ this.button = button
63
+ this.handler = handler
64
+ }
65
+
66
+ /**
67
+ * - 快速回复
68
+ */
69
+ reply (msg = '', options = { reply: false, recallMsg: 0, at: false, button: false, retry_count: 1 }) {
70
+ return this.e.reply(msg, options)
71
+ }
72
+
73
+ /**
74
+ * - 快速回复合并转发
75
+ */
76
+ async replyForward (msg) {
77
+ const result = await this.e.bot.sendForwardMessage(this.e.contact, msg)
78
+ return result
79
+ }
80
+
81
+ /**
82
+ * - 构建上下文键
83
+ */
84
+ conKey () {
85
+ return `${this.e.isGroup ? `${this.e.group_id}.` : ''}` + (this.userId || this.e.user_id)
86
+ }
87
+
88
+ /**
89
+ * 设置上下文状态
90
+ */
91
+ setContext (
92
+ /**
93
+ * @param fnc - 执行方法
94
+ */
95
+ fnc,
96
+ /**
97
+ * @param reply - 超时后是否回复
98
+ */
99
+ reply = true,
100
+ /**
101
+ * @param time - 超时时间,默认120秒
102
+ */
103
+ time = 120) {
104
+ const key = this.conKey()
105
+ stateArr[key] = { plugin: this, fnc }
106
+ /** 操作时间 */
107
+ this.timeout = setTimeout(() => {
108
+ if (stateArr[key]) {
109
+ delete stateArr[key]
110
+ if (reply) { this.e.reply('操作超时已取消', { at: true }) }
111
+ }
112
+ }, time * 1000)
113
+ }
114
+
115
+ /**
116
+ * 获取上下文状态
117
+ */
118
+ getContext () {
119
+ const key = this.conKey()
120
+ return stateArr[key]
121
+ }
122
+
123
+ /**
124
+ * 清除上下文状态
125
+ */
126
+ finish () {
127
+ const key = this.conKey()
128
+ if (stateArr[key] && stateArr[key]) {
129
+ /** 清除定时器 */
130
+ clearTimeout(this.timeout)
131
+ delete stateArr[key]
132
+ }
133
+ }
134
+ }
135
+ /**
136
+ * 上下文状态
137
+ */
138
+ export const stateArr = {}
@@ -0,0 +1,149 @@
1
+ import path from 'path';
2
+ import chokidar from 'chokidar';
3
+ import schedule from 'node-schedule';
4
+ import Plugin from './plugin.js';
5
+ import { Plugin as PluginType, PluginApps, PluginTask, dirName, fileName, AppInfo } from '../types/plugin.js';
6
+ /**
7
+ * 加载插件
8
+ */
9
+ declare const _default: {
10
+ dir: './plugins';
11
+ dirPath: string;
12
+ /**
13
+ * - 插件列表
14
+ */
15
+ Apps: Array<PluginApps>;
16
+ /**
17
+ * - 定时任务
18
+ */
19
+ task: Array<PluginTask & {
20
+ App: new () => Plugin;
21
+ /**
22
+ * - 定时任务
23
+ */
24
+ schedule?: schedule.Job;
25
+ /**
26
+ * - 文件信息
27
+ */
28
+ file: {
29
+ dir: dirName;
30
+ name: fileName;
31
+ };
32
+ }>;
33
+ /**
34
+ * - 监听器
35
+ */
36
+ watcher: Map<string, chokidar.FSWatcher>;
37
+ /**
38
+ * - 热更新列表
39
+ */
40
+ watchList: Array<{
41
+ dir: dirName;
42
+ name?: fileName;
43
+ }>;
44
+ /**
45
+ * - 插件索引ID
46
+ */
47
+ index: number;
48
+ /**
49
+ * - 命令插件索引列表
50
+ */
51
+ rule: Array<number>;
52
+ PluginList: {
53
+ [key: string]: PluginApps;
54
+ };
55
+ /**
56
+ * 插件初始化
57
+ */
58
+ load(): Promise<any>;
59
+ /**
60
+ * 获取所有插件
61
+ */
62
+ getPlugins(): AppInfo[];
63
+ /**
64
+ * 获取指定文件夹下的所有插件
65
+ * @param dir - 插件包名称
66
+ * @param isTs - 是否获取ts插件
67
+ */
68
+ getApps(dir: dirName, isTs?: boolean): AppInfo[];
69
+ /**
70
+ * 构建插件信息
71
+ */
72
+ App(App: new () => Plugin, Class: PluginType, file: {
73
+ /**
74
+ * - 插件根目录名称
75
+ * - 例如: karin-plugin-example
76
+ * - 例如: karin-plugin-example/apps
77
+ */
78
+ dir: string;
79
+ /**
80
+ * - 插件名称
81
+ * - 例如: index.js
82
+ */
83
+ name: string;
84
+ /**
85
+ * - 插件相对路径
86
+ * - 从插件根目录开始
87
+ */
88
+ path: string;
89
+ }): {
90
+ App: new () => Plugin;
91
+ /** 插件文件信息 */
92
+ file: {
93
+ /**
94
+ * - 插件根目录名称
95
+ * - 例如: karin-plugin-example
96
+ * - 例如: karin-plugin-example/apps
97
+ */
98
+ dir: string;
99
+ /**
100
+ * - 插件名称
101
+ * - 例如: index.js
102
+ */
103
+ name: string;
104
+ /**
105
+ * - 插件相对路径
106
+ * - 从插件根目录开始
107
+ */
108
+ path: string;
109
+ };
110
+ name: string;
111
+ desc: string;
112
+ event: import("../types/index.js").Event | "message.group_message" | "message.friend_message" | "message.guild_message" | "message.nearby" | "message.stranger" | "message.stranger_from_group" | "message.friend_apply" | "message.group_apply" | "message.invited_group" | "message.friend_poke" | "message.friend_recall" | "message.friend_file_uploaded" | "message.group_poke" | "message.group_card_changed" | "message.group_member_unique_title_changed" | "message.group_essence_changed" | "message.group_recall" | "message.group_member_increase" | "message.group_member_decrease" | "message.group_admin_changed" | "message.group_member_ban" | "message.group_sign" | "message.group_whole_ban" | "message.group_file_uploaded" | "request.group_message" | "request.friend_message" | "request.guild_message" | "request.nearby" | "request.stranger" | "request.stranger_from_group" | "request.friend_apply" | "request.group_apply" | "request.invited_group" | "request.friend_poke" | "request.friend_recall" | "request.friend_file_uploaded" | "request.group_poke" | "request.group_card_changed" | "request.group_member_unique_title_changed" | "request.group_essence_changed" | "request.group_recall" | "request.group_member_increase" | "request.group_member_decrease" | "request.group_admin_changed" | "request.group_member_ban" | "request.group_sign" | "request.group_whole_ban" | "request.group_file_uploaded" | "notice.group_message" | "notice.friend_message" | "notice.guild_message" | "notice.nearby" | "notice.stranger" | "notice.stranger_from_group" | "notice.friend_apply" | "notice.group_apply" | "notice.invited_group" | "notice.friend_poke" | "notice.friend_recall" | "notice.friend_file_uploaded" | "notice.group_poke" | "notice.group_card_changed" | "notice.group_member_unique_title_changed" | "notice.group_essence_changed" | "notice.group_recall" | "notice.group_member_increase" | "notice.group_member_decrease" | "notice.group_admin_changed" | "notice.group_member_ban" | "notice.group_sign" | "notice.group_whole_ban" | "notice.group_file_uploaded" | "meta_event.group_message" | "meta_event.friend_message" | "meta_event.guild_message" | "meta_event.nearby" | "meta_event.stranger" | "meta_event.stranger_from_group" | "meta_event.friend_apply" | "meta_event.group_apply" | "meta_event.invited_group" | "meta_event.friend_poke" | "meta_event.friend_recall" | "meta_event.friend_file_uploaded" | "meta_event.group_poke" | "meta_event.group_card_changed" | "meta_event.group_member_unique_title_changed" | "meta_event.group_essence_changed" | "meta_event.group_recall" | "meta_event.group_member_increase" | "meta_event.group_member_decrease" | "meta_event.group_admin_changed" | "meta_event.group_member_ban" | "meta_event.group_sign" | "meta_event.group_whole_ban" | "meta_event.group_file_uploaded" | "message_sent.group_message" | "message_sent.friend_message" | "message_sent.guild_message" | "message_sent.nearby" | "message_sent.stranger" | "message_sent.stranger_from_group" | "message_sent.friend_apply" | "message_sent.group_apply" | "message_sent.invited_group" | "message_sent.friend_poke" | "message_sent.friend_recall" | "message_sent.friend_file_uploaded" | "message_sent.group_poke" | "message_sent.group_card_changed" | "message_sent.group_member_unique_title_changed" | "message_sent.group_essence_changed" | "message_sent.group_recall" | "message_sent.group_member_increase" | "message_sent.group_member_decrease" | "message_sent.group_admin_changed" | "message_sent.group_member_ban" | "message_sent.group_sign" | "message_sent.group_whole_ban" | "message_sent.group_file_uploaded";
113
+ priority: number;
114
+ accept: boolean;
115
+ rule: import("../types/plugin.js").PluginRule[];
116
+ type: "function" | "class";
117
+ task: PluginTask[];
118
+ handler: import("../types/plugin.js").PluginHandler[];
119
+ button: import("../types/plugin.js").PluginButton[];
120
+ };
121
+ /** 排序 */
122
+ orderBy(): void;
123
+ /**
124
+ * 新增插件
125
+ * @param dir - 插件包路径
126
+ * @param name - 插件名称
127
+ * @param isOrderBy - 是否重新导入
128
+ */
129
+ createdApp(dir: dirName, name: fileName, isOrderBy?: boolean): Promise<boolean>;
130
+ /**
131
+ * 卸载插件
132
+ */
133
+ uninstallApp(dir: dirName, name: fileName): void;
134
+ /** 创建定时任务 */
135
+ creatTask(): Promise<void>;
136
+ /**
137
+ * 卸载定时任务
138
+ */
139
+ uninstallTask(dir: dirName, name: fileName): void;
140
+ /**
141
+ * 监听单个文件热更新
142
+ */
143
+ watch(dir: dirName, name: fileName): void;
144
+ /**
145
+ * 监听文件夹更新
146
+ */
147
+ watchDir(dir: dirName): void;
148
+ };
149
+ export default _default;