diff --git a/scalabot-app/src/main/kotlin/ExtensionComponents.kt b/scalabot-app/src/main/kotlin/ExtensionComponents.kt index a5b7315..361e70f 100644 --- a/scalabot-app/src/main/kotlin/ExtensionComponents.kt +++ b/scalabot-app/src/main/kotlin/ExtensionComponents.kt @@ -90,6 +90,10 @@ internal class ExtensionLoader( try { val extension = factory.createExtensionInstance(bot, getExtensionDataFolder(extensionArtifact)) + if (extension == null) { + log.debug { "Factory ${factory::class.java} 创建插件时返回了 null, 已跳过. (BotName: ${bot.botUsername})" } + continue + } factories.add(LoadedExtensionEntry(extensionArtifact, factory::class.java, extension)) } catch (e: Exception) { log.error(e) { "创建扩展时发生异常. (ExtArtifact: `$extensionArtifact`, Factory: ${factory::class.java.name})" } diff --git a/scalabot-extension/src/main/java/net/lamgc/scalabot/extension/BotExtensionFactory.java b/scalabot-extension/src/main/java/net/lamgc/scalabot/extension/BotExtensionFactory.java index 4c6a2dc..54ec030 100644 --- a/scalabot-extension/src/main/java/net/lamgc/scalabot/extension/BotExtensionFactory.java +++ b/scalabot-extension/src/main/java/net/lamgc/scalabot/extension/BotExtensionFactory.java @@ -27,7 +27,7 @@ public interface BotExtensionFactory { * @param bot 机器人对象. * @param shareDataFolder ScalaBot App 为扩展提供的共享数据目录, 同一个扩展包的 Factory 接收到的共享数据目录都是一样的; * 建议将数据存储在数据目录中, 便于数据的存储管理. - * @return 返回为该 Bot 对象创建的扩展对象. + * @return 返回为该 Bot 对象创建的扩展对象, 如果不希望为该机器人提供扩展, 可返回 {@code null}. */ AbilityExtension createExtensionInstance(BaseAbilityBot bot, File shareDataFolder);