node-karin 0.2.1 → 0.3.0

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.
@@ -1,5 +1,5 @@
1
1
  import { EventEmitter } from 'events'
2
- import { PluginLoader } from './plugin.loader.js'
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', () => PluginLoader.load())
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, `Send Proactive Group ${contact.peer}: ${reply_log}`)
167
+ logger.bot('info', self_id, `${logger.green('Send Proactive Group')} ${contact.peer}: ${reply_log}`)
168
168
  } else {
169
- logger.bot('info', self_id, `Send Proactive private ${contact.peer}: ${reply_log}`)
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)
@@ -1,11 +1,11 @@
1
- import { PluginType as PluginType, KarinElement, KarinNodeElement, E } from '../types/index.js';
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: PluginType['e'];
6
+ e: EventType<this>;
7
7
  init?: () => void;
8
- accept?: (e: E) => Promise<void>;
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 - 优先级 默认5000
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
- * - 优先级 默认为5000
73
+ * - 优先级 默认为10000
74
74
  */
75
75
  priority?: PluginType['priority'];
76
76
  /**
@@ -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 - 优先级 默认5000
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 = 5000, task = [], rule = [], handler = [], button = [] }) {
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 { PluginType as PluginType, PluginApps, PluginTask, dirName, fileName, AppInfo } from '../types/index.js';
4
+ import { PluginApps, PluginTask, dirName, fileName, AppInfo } from '../types/index.js';
6
5
  /**
7
6
  * 加载插件
8
7
  */
9
- export declare const PluginLoader: {
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
- Apps: Array<PluginApps>;
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(): AppInfo[];
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?: 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/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): void;
109
+ watchDir(dir: dirName): Promise<true | undefined>;
148
110
  };