From 805c1d5ea2e3c8d3cfb5c2e751fc74786c1ed3fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 31 Jan 2026 15:26:56 +0800 Subject: [PATCH] Default plugins disabled; skip loading disabled Change plugin loader to treat plugins as disabled by default (unless the id/dir is 'napcat-plugin-builtin') by using nullish coalescing when reading statusConfig. Add an early-return guard in the plugin manager/adapter that logs and skips loading when entry.enable is false. This prevents disabled plugins from being loaded automatically and provides a clear log message when skipped. --- packages/napcat-onebot/network/plugin-manger.ts | 5 +++++ packages/napcat-onebot/network/plugin/loader.ts | 6 +++--- packages/napcat-onebot/network/plugin/manager.ts | 5 +++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/napcat-onebot/network/plugin-manger.ts b/packages/napcat-onebot/network/plugin-manger.ts index 42a889e9..fa5e3350 100644 --- a/packages/napcat-onebot/network/plugin-manger.ts +++ b/packages/napcat-onebot/network/plugin-manger.ts @@ -316,6 +316,11 @@ export class OB11PluginMangerAdapter extends IOB11NetworkAdapter i entry = newEntry; } + if (!entry.enable) { + this.logger.log(`[PluginManager] Skipping loading disabled plugin: ${pluginId}`); + return false; + } + return await this.loadPlugin(entry); } diff --git a/packages/napcat-onebot/network/plugin/loader.ts b/packages/napcat-onebot/network/plugin/loader.ts index 7c4b23c5..85ab8030 100644 --- a/packages/napcat-onebot/network/plugin/loader.ts +++ b/packages/napcat-onebot/network/plugin/loader.ts @@ -123,8 +123,8 @@ export class PluginLoader { const entryFile = this.findEntryFile(pluginDir, packageJson); const entryPath = entryFile ? path.join(pluginDir, entryFile) : undefined; - // 获取启用状态(默认启用) - const enable = statusConfig[pluginId] !== false; + // 获取启用状态(默认禁用,内置插件除外) + const enable = statusConfig[pluginId] ?? (pluginId === 'napcat-plugin-builtin'); // 创建插件条目 const entry: PluginEntry = { @@ -159,7 +159,7 @@ export class PluginLoader { id: dirname, // 使用目录名作为 ID fileId: dirname, pluginPath: path.join(this.pluginPath, dirname), - enable: statusConfig[dirname] !== false, + enable: statusConfig[dirname] ?? (dirname === 'napcat-plugin-builtin'), loaded: false, runtime: { status: 'error', diff --git a/packages/napcat-onebot/network/plugin/manager.ts b/packages/napcat-onebot/network/plugin/manager.ts index 9fd3ddd6..b9b38fce 100644 --- a/packages/napcat-onebot/network/plugin/manager.ts +++ b/packages/napcat-onebot/network/plugin/manager.ts @@ -285,6 +285,11 @@ export class OB11PluginManager extends IOB11NetworkAdapter impleme entry = newEntry; } + if (!entry.enable) { + this.logger.log(`[PluginManager] Skipping loading disabled plugin: ${pluginId}`); + return false; + } + return await this.loadPlugin(entry); }