mirror of
https://github.com/Jerryplusy/crystelf-plugin.git
synced 2025-12-05 15:41:56 +00:00
88 lines
2.3 KiB
JavaScript
88 lines
2.3 KiB
JavaScript
import chalk from 'chalk';
|
|
import Version from './lib/system/version.js';
|
|
import fc from './components/json.js';
|
|
import Path from './constants/path.js';
|
|
import { crystelfInit } from './lib/system/init.js';
|
|
import updater from './lib/system/updater.js';
|
|
|
|
logger.info(
|
|
chalk.rgb(134, 142, 204)(`crystelf-plugin ${Version.ver} 初始化~ by ${Version.author}`)
|
|
);
|
|
|
|
await crystelfInit.CSH().then(logger.mark('[crystelf-plugin] crystelf-plugin 完成初始化'));
|
|
|
|
import ConfigControl from "./lib/config/configControl.js";
|
|
const appConfig = await ConfigControl.get('config');
|
|
|
|
if(appConfig.autoUpdate) {
|
|
logger.info('[crystelf-plugin] 自动更新已启用,正在自动检查更新..');
|
|
updater.checkAndUpdate().catch((err) => {
|
|
logger.error(err);
|
|
});
|
|
}
|
|
|
|
const appPath = Path.apps;
|
|
const jsFiles = await fc.readDirRecursive(appPath, 'js');
|
|
const enabledApps = [];
|
|
const disabledApps = [];
|
|
|
|
for (const file of jsFiles) {
|
|
const name = file.replace('.js', '');
|
|
const configKey = getConfigKey(name);
|
|
if (appConfig[configKey] === false) {
|
|
disabledApps.push(name);
|
|
logger.info(`[crystelf-plugin] 插件 ${name} 已禁用,跳过加载`);
|
|
} else {
|
|
enabledApps.push(file);
|
|
}
|
|
}
|
|
|
|
if (disabledApps.length > 0) {
|
|
logger.info(`[crystelf-plugin] 已跳过 ${disabledApps.length} 个禁用的插件: ${disabledApps.join(', ')}`);
|
|
}
|
|
|
|
let ret = enabledApps.map((file) => {
|
|
return import(`./apps/${file}`);
|
|
});
|
|
|
|
ret = await Promise.allSettled(ret);
|
|
|
|
let apps = {};
|
|
for (let i in enabledApps) {
|
|
let name = enabledApps[i].replace('.js', '');
|
|
if (ret[i].status !== 'fulfilled') {
|
|
logger.error(`[crystelf-plugin] 插件 ${name} 加载失败:`, ret[i].reason);
|
|
continue;
|
|
}
|
|
apps[name] = ret[i].value[Object.keys(ret[i].value)[0]];
|
|
}
|
|
logger.info(`[crystelf-plugin] 成功加载 ${Object.keys(apps).length} 个插件`);
|
|
|
|
export { apps };
|
|
|
|
/**
|
|
* 将插件文件名映射到配置键名
|
|
* @param {string} fileName
|
|
* @returns {string}
|
|
*/
|
|
function getConfigKey(fileName) {
|
|
const keyMap = {
|
|
'60s': '60s',
|
|
'ai': 'ai',
|
|
'auth': 'auth',
|
|
'auth-set': 'auth',
|
|
'face-reply': 'faceReply',
|
|
'face-reply-message': 'faceReply',
|
|
'fanqie': 'fanqie',
|
|
'help': 'help',
|
|
'music': 'music',
|
|
'poke': 'poke',
|
|
'rssPush': 'rss',
|
|
'welcome': 'welcome',
|
|
'welcome-set': 'welcome',
|
|
'zwa': 'zwa'
|
|
};
|
|
|
|
return keyMap[fileName] || fileName;
|
|
}
|