perf: 优化插件管理

This commit is contained in:
Rock Chin
2023-01-17 15:43:28 +08:00
parent fbd53dae7c
commit 2894309fa6
2 changed files with 21 additions and 18 deletions

View File

@@ -75,22 +75,24 @@ def initialize_plugins():
continue continue
try: try:
plugin['instance'] = plugin["class"](plugin_host=context.get_plugin_host()) plugin['instance'] = plugin["class"](plugin_host=context.get_plugin_host())
logging.info("插件 {} 已初始化".format(plugin['name']))
except: except:
logging.error("插件{}初始化时发生错误: {}".format(plugin['name'], sys.exc_info())) logging.error("插件{}初始化时发生错误: {}".format(plugin['name'], sys.exc_info()))
def unload_plugins(): def unload_plugins():
""" 卸载插件 """ """ 卸载插件 """
for plugin in __plugins__.values(): # for plugin in __plugins__.values():
if plugin['enabled'] and plugin['instance'] is not None: # if plugin['enabled'] and plugin['instance'] is not None:
if not hasattr(plugin['instance'], '__del__'): # if not hasattr(plugin['instance'], '__del__'):
logging.warning("插件{}没有定义析构函数".format(plugin['name'])) # logging.warning("插件{}没有定义析构函数".format(plugin['name']))
else: # else:
try: # try:
plugin['instance'].__del__() # plugin['instance'].__del__()
logging.info("卸载插件: {}".format(plugin['name'])) # logging.info("卸载插件: {}".format(plugin['name']))
except: # plugin['instance'] = None
logging.error("插件{}卸载时发生错误: {}".format(plugin['name'], sys.exc_info())) # except:
# logging.error("插件{}卸载时发生错误: {}".format(plugin['name'], sys.exc_info()))
def install_plugin(repo_url: str): def install_plugin(repo_url: str):
@@ -242,13 +244,14 @@ class PluginHost:
if not plugin['enabled']: if not plugin['enabled']:
continue continue
if plugin['instance'] is None: # if plugin['instance'] is None:
# 从关闭状态切到开启状态之后,重新加载插件 # # 从关闭状态切到开启状态之后,重新加载插件
try: # try:
plugin['instance'] = plugin["class"]() # plugin['instance'] = plugin["class"](plugin_host=self)
except: # logging.info("插件 {} 已初始化".format(plugin['name']))
logging.error("插件{}初始化时发生错误: {}".format(plugin['name'], sys.exc_info())) # except:
continue # logging.error("插件 {} 初始化时发生错误: {}".format(plugin['name'], sys.exc_info()))
# continue
for hook in plugin['hooks'].get(event_name, []): for hook in plugin['hooks'].get(event_name, []):
try: try:

View File

@@ -4,7 +4,7 @@ import os
import threading import threading
import mirai.models.bus import mirai.models.bus
from mirai import At, GroupMessage, MessageEvent, Mirai, Plain, StrangerMessage, WebSocketAdapter, HTTPAdapter, \ from mirai import At, GroupMessage, MessageEvent, Mirai, StrangerMessage, WebSocketAdapter, HTTPAdapter, \
FriendMessage, Image FriendMessage, Image
import pkg.openai.session import pkg.openai.session