forked from xfdown/xiaofei-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
104 lines (88 loc) · 2.67 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/**
插件更新地址:https://gitee.com/xfdown/xiaofei-plugin
*/
import YAML from 'yaml';
import fs from 'node:fs';
import { Version, Plugin_Path } from './components/index.js';
const apps = {};
global.xiaofei_plugin = {
apps: apps,
puppeteer: null
};
let is_icqq = false;
let is_oicq = false;
const __dirname = process.cwd().replace(/\\/g, '/') + '/plugins/ICQQ-Plugin'
try {
let icqq = await import("icqq");
if (icqq) is_icqq = true;
} catch (err) {
try {
let oicq = await import("oicq");
if (oicq) is_oicq = true;
} catch (err) { }
}
if (is_icqq || is_oicq) {
if (!global.core) {
if (Version.isTrss) {
const dirs = ["Model", "node_modules"].map(i => `${__dirname}/${i}/icqq/`).filter(fs.existsSync);
for (const dir of dirs) {
try {
const { core } = (await import(`file://${dir}lib/index.js`)).default;
global.core = core;
break;
} catch (err) {
logger.info(err);
}
}
} else {
global.core = (await import(is_icqq ? 'icqq' : 'oicq')).core;
}
}
if (!global.segment) global.segment = (await import(is_icqq ? 'icqq' : 'oicq')).segment;
}
if (fs.existsSync("./renderers/puppeteer/lib/puppeteer.js")) {
try {
let configFile = `./renderers/puppeteer/config.yaml`;
let rendererCfg = {};
if (!fs.existsSync(configFile)) {
configFile = `./renderers/puppeteer/config_default.yaml`;
}
try {
rendererCfg = YAML.parse(fs.readFileSync(configFile, 'utf8'));
} catch (e) {
rendererCfg = {};
}
let puppeteer = new (await import("../../renderers/puppeteer/lib/puppeteer.js")).default(rendererCfg);
xiaofei_plugin.puppeteer = puppeteer;
} catch (e) { }
}
if (!xiaofei_plugin.puppeteer) {
try {
let puppeteer = (await import("../../lib/puppeteer/puppeteer.js")).default;
xiaofei_plugin.puppeteer = puppeteer;
} catch (err) {
xiaofei_plugin.puppeteer = {};
}
}
const files = fs.readdirSync(`${Plugin_Path}/apps`).filter(file => file.endsWith('.js'))
let ret = []
files.forEach((file) => {
ret.push(import(`./apps/${file}`))
})
ret = await Promise.allSettled(ret)
let ver = Version.ver;
logger.info(`---------^_^---------`)
logger.info(`小飞插件${ver}:初始化~`)
for (let i in files) {
let name = files[i].replace('.js', '')
if (ret[i].status != 'fulfilled') {
logger.error(`【${logger.red(name)}】模块载入失败!`)
logger.error(ret[i].reason)
continue
}
logger.info(`【${name}】模块载入成功!`)
apps[name] = ret[i].value[Object.keys(ret[i].value)[0]]
}
logger.info(`小飞插件${ver}:初始化完成!`)
logger.info(`---------------------`)
export { apps }