feat(plugin): 添加动态加载插件的 API

新增 `load_plugin` 函数,允许在运行时加载一个已注册但未加载的插件。
这为更灵活的插件管理(例如热加载)提供了基础支持。
This commit is contained in:
minecraft1024a
2025-12-06 18:32:15 +08:00
parent c059c7a2f1
commit b1e7b6972d

View File

@@ -189,6 +189,38 @@ def register_plugin_from_file(plugin_name: str, load_after_register: bool = True
# 该部分包含控制插件整体启用/禁用状态的功能。 # 该部分包含控制插件整体启用/禁用状态的功能。
async def load_plugin(plugin_name: str) -> bool:
"""
加载一个已注册但未加载的插件。
Args:
plugin_name (str): 要加载的插件名称。
Returns:
bool: 如果插件成功加载,则为 True。
Raises:
ValueError: 如果插件未注册或已经加载。
"""
# 检查插件是否已经加载
if plugin_name in plugin_manager.list_loaded_plugins():
logger.warning(f"插件 '{plugin_name}' 已经加载。")
return True
# 检查插件是否已注册
if plugin_name not in plugin_manager.list_registered_plugins():
raise ValueError(f"插件 '{plugin_name}' 未注册,无法加载。")
# 尝试加载插件
success, _ = plugin_manager.load_registered_plugin_classes(plugin_name)
if success:
logger.info(f"插件 '{plugin_name}' 加载成功。")
else:
logger.error(f"插件 '{plugin_name}' 加载失败。")
return success
async def enable_plugin(plugin_name: str) -> bool: async def enable_plugin(plugin_name: str) -> bool:
""" """
启用一个已禁用的插件。 启用一个已禁用的插件。