node-karin 0.2.2 → 0.3.1
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/core/listener.js +4 -4
- package/lib/core/plugin.d.ts +5 -5
- package/lib/core/plugin.js +3 -2
- package/lib/core/plugin.loader.d.ts +46 -84
- package/lib/core/plugin.loader.js +220 -244
- package/lib/core/server.js +1 -1
- package/lib/db/level.d.ts +1 -1
- package/lib/event/message.handler.js +3 -3
- package/lib/event/review.handler.d.ts +5 -5
- package/lib/index.d.ts +1 -7
- package/lib/index.js +5 -5
- package/lib/types/event.d.ts +13 -2
- package/lib/types/plugin.d.ts +7 -10
- package/lib/utils/button.d.ts +1 -47
- package/lib/utils/button.js +29 -73
- package/lib/utils/config.js +10 -10
- package/lib/utils/handler.d.ts +14 -51
- package/lib/utils/handler.js +60 -55
- package/lib/utils/yamlEditor.d.ts +1 -1
- package/lib/utils/yamlEditor.js +1 -1
- package/package.json +3 -6
- /package/lib/{renderer → render}/app.d.ts +0 -0
- /package/lib/{renderer → render}/app.js +0 -0
- /package/lib/{renderer → render}/base.d.ts +0 -0
- /package/lib/{renderer → render}/base.js +0 -0
- /package/lib/{renderer → render}/client.d.ts +0 -0
- /package/lib/{renderer → render}/client.js +0 -0
- /package/lib/{renderer → render}/http.d.ts +0 -0
- /package/lib/{renderer → render}/http.js +0 -0
- /package/lib/{renderer → render}/index.d.ts +0 -0
- /package/lib/{renderer → render}/index.js +0 -0
- /package/lib/{renderer → render}/server.d.ts +0 -0
- /package/lib/{renderer → render}/server.js +0 -0
- /package/lib/{renderer → render}/wormhole.d.ts +0 -0
- /package/lib/{renderer → render}/wormhole.js +0 -0
package/lib/core/listener.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventEmitter } from 'events'
|
|
2
|
-
import {
|
|
2
|
+
import { pluginLoader } from './plugin.loader.js'
|
|
3
3
|
import { common, logger, config } from '../utils/index.js'
|
|
4
4
|
import { MessageHandler } from '../event/message.handler.js'
|
|
5
5
|
/**
|
|
@@ -24,7 +24,7 @@ export const listener = new (class Listeners extends EventEmitter {
|
|
|
24
24
|
this.list = []
|
|
25
25
|
this.adapter = []
|
|
26
26
|
this.on('error', data => logger.error(data))
|
|
27
|
-
this.on('plugin', () =>
|
|
27
|
+
this.on('load.plugin', () => pluginLoader.load())
|
|
28
28
|
this.on('adapter', data => {
|
|
29
29
|
let path = data.path || '无'
|
|
30
30
|
if (path && data.type !== 'grpc') { path = `ws://127.0.0.1:/${config.Server.http.port}${data.path}` }
|
|
@@ -164,9 +164,9 @@ export const listener = new (class Listeners extends EventEmitter {
|
|
|
164
164
|
const reply_log = common.makeMessageLog(NewElements)
|
|
165
165
|
const self_id = bot.account.uid || bot.account.uin
|
|
166
166
|
if (contact.scene === 'group') {
|
|
167
|
-
logger.bot('info', self_id,
|
|
167
|
+
logger.bot('info', self_id, `${logger.green('Send Proactive Group')} ${contact.peer}: ${reply_log}`)
|
|
168
168
|
} else {
|
|
169
|
-
logger.bot('info', self_id,
|
|
169
|
+
logger.bot('info', self_id, `${logger.green('Send Proactive private')} ${contact.peer}: ${reply_log}`)
|
|
170
170
|
}
|
|
171
171
|
try {
|
|
172
172
|
this.emit('karin:count:send', 1)
|
package/lib/core/plugin.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { PluginType
|
|
1
|
+
import { PluginType, KarinElement, KarinNodeElement, EventType } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* 插件基类
|
|
4
4
|
*/
|
|
5
5
|
export declare class Plugin implements PluginType {
|
|
6
|
-
e:
|
|
6
|
+
e: EventType<this>;
|
|
7
7
|
init?: () => void;
|
|
8
|
-
accept?: (e:
|
|
8
|
+
accept?: (e: EventType<this>) => Promise<void>;
|
|
9
9
|
replyCallback: PluginType['replyCallback'];
|
|
10
10
|
/**
|
|
11
11
|
* @param name - 插件名称
|
|
@@ -25,7 +25,7 @@ export declare class Plugin implements PluginType {
|
|
|
25
25
|
*/
|
|
26
26
|
event: PluginType['event'];
|
|
27
27
|
/**
|
|
28
|
-
* @param priority - 优先级 默认
|
|
28
|
+
* @param priority - 优先级 默认10000
|
|
29
29
|
*/
|
|
30
30
|
priority: PluginType['priority'];
|
|
31
31
|
/**
|
|
@@ -70,7 +70,7 @@ export declare class Plugin implements PluginType {
|
|
|
70
70
|
*/
|
|
71
71
|
event?: PluginType['event'];
|
|
72
72
|
/**
|
|
73
|
-
* - 优先级 默认为
|
|
73
|
+
* - 优先级 默认为10000
|
|
74
74
|
*/
|
|
75
75
|
priority?: PluginType['priority'];
|
|
76
76
|
/**
|
package/lib/core/plugin.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* 插件基类
|
|
3
3
|
*/
|
|
4
4
|
export class Plugin {
|
|
5
|
+
// 类型 需要根据e中的event类型来确定
|
|
5
6
|
e
|
|
6
7
|
init
|
|
7
8
|
accept
|
|
@@ -24,7 +25,7 @@ export class Plugin {
|
|
|
24
25
|
*/
|
|
25
26
|
event
|
|
26
27
|
/**
|
|
27
|
-
* @param priority - 优先级 默认
|
|
28
|
+
* @param priority - 优先级 默认10000
|
|
28
29
|
*/
|
|
29
30
|
priority
|
|
30
31
|
/**
|
|
@@ -51,7 +52,7 @@ export class Plugin {
|
|
|
51
52
|
* @param timeout - 上下文超时
|
|
52
53
|
*/
|
|
53
54
|
timeout
|
|
54
|
-
constructor ({ name, dsc = name, desc = name, event = 'message', priority =
|
|
55
|
+
constructor ({ name, dsc = name, desc = name, event = 'message', priority = 10000, task = [], rule = [], handler = [], button = [] }) {
|
|
55
56
|
this.name = name
|
|
56
57
|
this.dsc = dsc
|
|
57
58
|
this.desc = desc
|
|
@@ -1,30 +1,52 @@
|
|
|
1
|
-
import path from 'path';
|
|
2
1
|
import chokidar from 'chokidar';
|
|
3
2
|
import schedule from 'node-schedule';
|
|
4
3
|
import { Plugin } from './plugin.js';
|
|
5
|
-
import {
|
|
4
|
+
import { PluginApps, PluginTask, dirName, fileName, AppInfo } from '../types/index.js';
|
|
6
5
|
/**
|
|
7
6
|
* 加载插件
|
|
8
7
|
*/
|
|
9
|
-
export declare const
|
|
8
|
+
export declare const pluginLoader: {
|
|
10
9
|
dir: './plugins';
|
|
11
10
|
dirPath: string;
|
|
11
|
+
/**
|
|
12
|
+
* - 插件索引ID
|
|
13
|
+
*/
|
|
14
|
+
index: number;
|
|
15
|
+
/**
|
|
16
|
+
* - 命令插件索引列表
|
|
17
|
+
*/
|
|
18
|
+
ruleIds: Array<number>;
|
|
19
|
+
buttonIds: Array<number>;
|
|
20
|
+
/**
|
|
21
|
+
* - handler
|
|
22
|
+
*/
|
|
23
|
+
handlerIds: {
|
|
24
|
+
[key: string]: {
|
|
25
|
+
index: string;
|
|
26
|
+
fnc: string | Function;
|
|
27
|
+
priority: number;
|
|
28
|
+
}[];
|
|
29
|
+
};
|
|
12
30
|
/**
|
|
13
31
|
* - 插件列表
|
|
14
32
|
*/
|
|
15
|
-
|
|
33
|
+
FileList: Array<AppInfo>;
|
|
34
|
+
/**
|
|
35
|
+
* - 是否ts环境
|
|
36
|
+
*/
|
|
37
|
+
isTs: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* - 最终缓存的插件列表 通过index索引
|
|
40
|
+
*/
|
|
41
|
+
PluginList: {
|
|
42
|
+
[key: string]: PluginApps;
|
|
43
|
+
};
|
|
16
44
|
/**
|
|
17
45
|
* - 定时任务
|
|
18
46
|
*/
|
|
19
47
|
task: Array<PluginTask & {
|
|
20
48
|
App: new () => Plugin;
|
|
21
|
-
/**
|
|
22
|
-
* - 定时任务
|
|
23
|
-
*/
|
|
24
49
|
schedule?: schedule.Job;
|
|
25
|
-
/**
|
|
26
|
-
* - 文件信息
|
|
27
|
-
*/
|
|
28
50
|
file: {
|
|
29
51
|
dir: dirName;
|
|
30
52
|
name: fileName;
|
|
@@ -41,17 +63,6 @@ export declare const PluginLoader: {
|
|
|
41
63
|
dir: dirName;
|
|
42
64
|
name?: fileName;
|
|
43
65
|
}>;
|
|
44
|
-
/**
|
|
45
|
-
* - 插件索引ID
|
|
46
|
-
*/
|
|
47
|
-
index: number;
|
|
48
|
-
/**
|
|
49
|
-
* - 命令插件索引列表
|
|
50
|
-
*/
|
|
51
|
-
rule: Array<number>;
|
|
52
|
-
PluginList: {
|
|
53
|
-
[key: string]: PluginApps;
|
|
54
|
-
};
|
|
55
66
|
/**
|
|
56
67
|
* 插件初始化
|
|
57
68
|
*/
|
|
@@ -59,67 +70,24 @@ export declare const PluginLoader: {
|
|
|
59
70
|
/**
|
|
60
71
|
* 获取所有插件
|
|
61
72
|
*/
|
|
62
|
-
getPlugins():
|
|
73
|
+
getPlugins(): void;
|
|
74
|
+
/**
|
|
75
|
+
* 传入路径 语言环境 返回加载index.ts 还是 index.js
|
|
76
|
+
* @param path - 插件路径
|
|
77
|
+
* @param lang - 语言环境
|
|
78
|
+
*/
|
|
79
|
+
getIndex(path: string, lang: 'js' | 'ts'): string | boolean;
|
|
63
80
|
/**
|
|
64
81
|
* 获取指定文件夹下的所有插件
|
|
65
82
|
* @param dir - 插件包名称
|
|
66
83
|
* @param isTs - 是否获取ts插件
|
|
67
84
|
*/
|
|
68
|
-
getApps(dir: dirName, isTs
|
|
69
|
-
/**
|
|
70
|
-
*
|
|
71
|
-
|
|
72
|
-
|
|
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/index.js").PluginRule[];
|
|
116
|
-
type: "function" | "class";
|
|
117
|
-
task: PluginTask[];
|
|
118
|
-
handler: import("../types/index.js").PluginHandler[];
|
|
119
|
-
button: import("../types/index.js").PluginButton[];
|
|
120
|
-
};
|
|
121
|
-
/** 排序 */
|
|
122
|
-
orderBy(): void;
|
|
85
|
+
getApps(dir: dirName, isTs: boolean): void;
|
|
86
|
+
/**
|
|
87
|
+
* 排序并打印插件加兹安信息
|
|
88
|
+
* @param isPrint - 是否打印
|
|
89
|
+
*/
|
|
90
|
+
orderBy(isPrint?: boolean): void;
|
|
123
91
|
/**
|
|
124
92
|
* 新增插件
|
|
125
93
|
* @param dir - 插件包路径
|
|
@@ -131,12 +99,6 @@ export declare const PluginLoader: {
|
|
|
131
99
|
* 卸载插件
|
|
132
100
|
*/
|
|
133
101
|
uninstallApp(dir: dirName, name: fileName): void;
|
|
134
|
-
/** 创建定时任务 */
|
|
135
|
-
creatTask(): Promise<void>;
|
|
136
|
-
/**
|
|
137
|
-
* 卸载定时任务
|
|
138
|
-
*/
|
|
139
|
-
uninstallTask(dir: dirName, name: fileName): void;
|
|
140
102
|
/**
|
|
141
103
|
* 监听单个文件热更新
|
|
142
104
|
*/
|
|
@@ -144,5 +106,5 @@ export declare const PluginLoader: {
|
|
|
144
106
|
/**
|
|
145
107
|
* 监听文件夹更新
|
|
146
108
|
*/
|
|
147
|
-
watchDir(dir: dirName):
|
|
109
|
+
watchDir(dir: dirName): Promise<true | undefined>;
|
|
148
110
|
};
|