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);