diff --git a/basic_plugins/init_plugin_config/init_none_plugin_count_manager.py b/basic_plugins/init_plugin_config/init_none_plugin_count_manager.py index 918ed137..9bc905b1 100755 --- a/basic_plugins/init_plugin_config/init_none_plugin_count_manager.py +++ b/basic_plugins/init_plugin_config/init_none_plugin_count_manager.py @@ -20,26 +20,36 @@ def init_none_plugin_count_manager(): """ 清除已删除插件数据 """ - modules = [x.module for x in get_matchers()] - for module in none_plugin_count_manager.keys(): - if module not in modules: - none_plugin_count_manager.add_count(module) - else: - none_plugin_count_manager.reset(module) - if none_plugin_count_manager.check(module): + modules = [x.plugin_name for x in get_matchers()] + plugins_manager_list = list(plugins_manager.keys()) + for module in plugins_manager_list: + if module not in modules or none_plugin_count_manager.check(module): try: plugin_name = plugins_manager.get(module)["plugin_name"] except (AttributeError, KeyError): plugin_name = "" - try: - plugins2settings_manager.delete(module) - plugins2count_manager.delete(module) - plugins2cd_manager.delete(module) - plugins2block_manager.delete(module) - plugins_manager.delete(module) - resources_manager.remove_resource(module) - logger.info(f"{module}:{plugin_name} 插件疑似已删除,清除对应插件数据...") - except Exception as e: - logger.error( - f"{module}:{plugin_name} 插件疑似已删除,清除对应插件数据失败...{type(e)}:{e}" - ) + if none_plugin_count_manager.check(module): + try: + plugins2settings_manager.delete(module) + plugins2settings_manager.save() + plugins2count_manager.delete(module) + plugins2count_manager.save() + plugins2cd_manager.delete(module) + plugins2cd_manager.save() + plugins2block_manager.delete(module) + plugins2block_manager.save() + plugins_manager.delete(module) + plugins_manager.save() + resources_manager.remove_resource(module) + none_plugin_count_manager.delete(module) + logger.info(f"{module}:{plugin_name} 插件疑似已删除,清除对应插件数据...") + except Exception as e: + logger.exception( + f"{module}:{plugin_name} 插件疑似已删除,清除对应插件数据失败...{type(e)}:{e}") + else: + none_plugin_count_manager.add_count(module) + logger.info( + f"{module}:{plugin_name} 插件疑似已删除,加载{none_plugin_count_manager._max_count}次失败后将清除对应插件数据,当前次数:{none_plugin_count_manager._data[module]}") + else: + none_plugin_count_manager.reset(module) + none_plugin_count_manager.save() diff --git a/utils/manager/none_plugin_count_manager.py b/utils/manager/none_plugin_count_manager.py index 2da14d9f..e0e9fea2 100755 --- a/utils/manager/none_plugin_count_manager.py +++ b/utils/manager/none_plugin_count_manager.py @@ -4,7 +4,6 @@ from pathlib import Path class NonePluginCountManager(StaticData): - """ 插件加载容忍管理器,当连续 max_count 次插件加载,视为删除插件,清楚数据 """ @@ -15,6 +14,8 @@ class NonePluginCountManager(StaticData): :param max_count: 容忍最大次数 """ super().__init__(file) + if not self._data: + self._data = {} self._max_count = max_count def add_count(self, module: str, count: int = 1): @@ -42,10 +43,5 @@ class NonePluginCountManager(StaticData): :param module: 模块 """ if module in self._data.keys(): - return self._data.keys() > self._max_count + return self._data[module] >= self._max_count return False - - - - -