优化manager代码

This commit is contained in:
HibiKier
2022-11-21 20:43:41 +08:00
parent 49e38862af
commit cd66b7f5b8
41 changed files with 1974 additions and 1760 deletions
Executable → Regular
+66 -57
View File
@@ -1,7 +1,33 @@
from typing import Optional
from typing import Optional, Dict, Callable, Union
from pathlib import Path
from .data_class import StaticData
from . import group_manager
from utils.manager.data_class import StaticData
from utils.manager import group_manager
from .models import Plugin
def init_plugin(func: Callable):
"""
说明:
初始化群数据
参数:
:param func: func
"""
def wrapper(*args, **kwargs):
self = args[0]
module = args[1]
if module not in self._data.keys():
self._data[module] = Plugin(
plugin_name=module,
status=True,
error=False,
block_type=None,
author=None,
version=None,
)
return func(*args, **kwargs)
return wrapper
class PluginsManager(StaticData):
@@ -10,9 +36,10 @@ class PluginsManager(StaticData):
"""
def __init__(self, file: Path):
self._data: Dict[str, Plugin]
super().__init__(file)
if not self._data:
self._data = {}
for k, v in self._data.items():
self._data[k] = Plugin.parse_obj(v)
def add_plugin_data(
self,
@@ -26,23 +53,25 @@ class PluginsManager(StaticData):
version: Optional[int] = None,
):
"""
添加插件数据
:param module: 模块名称
:param plugin_name: 插件名称
:param status: 插件开关状态
:param error: 加载状态
:param block_type: 限制类型
:param author: 作者
:param version: 版本
说明:
添加插件数据
参数:
:param module: 模块名称
:param plugin_name: 插件名称
:param status: 插件开关状态
:param error: 加载状态
:param block_type: 限制类型
:param author: 作者
:param version: 版本
"""
self._data[module] = {
"plugin_name": plugin_name,
"status": status,
"error": error,
"block_type": block_type,
"author": author,
"version": version,
}
self._data[module] = Plugin(
plugin_name=plugin_name,
status=status,
error=error,
block_type=block_type,
author=author,
version=version,
)
def block_plugin(
self, module: str, group_id: Optional[int] = None, block_type: str = "all"
@@ -67,9 +96,7 @@ class PluginsManager(StaticData):
"""
self._set_plugin_status(module, "unblock", group_id)
def get_plugin_status(
self, module: str, block_type: str = "all"
) -> bool:
def get_plugin_status(self, module: str, block_type: str = "all") -> bool:
"""
说明:
获取插件状态
@@ -78,13 +105,12 @@ class PluginsManager(StaticData):
:param block_type: 限制类型
"""
if module in self._data.keys():
if self._data[module]["block_type"] == "all" and block_type == "all":
if self._data[module].block_type == "all" and block_type == "all":
return False
else:
return not self._data[module]["block_type"] == block_type
return not self._data[module].block_type == block_type
return True
def get_plugin_block_type(self, module: str) -> str:
def get_plugin_block_type(self, module: str) -> Optional[str]:
"""
说明:
获取功能限制类型
@@ -92,18 +118,19 @@ class PluginsManager(StaticData):
:param module: 模块名称
"""
if module in self._data.keys():
return self._data[module]["block_type"]
return ""
return self._data[module].block_type
@init_plugin
def get_plugin_error_status(self, module: str) -> bool:
"""
插件是否成功加载
:param module: 模块名称
说明:
插件是否成功加载
参数:
:param module: 模块名称
"""
if module not in self._data.keys():
self.init_plugin(module)
return self._data[module]["error"]
return self._data[module].error
@init_plugin
def _set_plugin_status(
self,
module: str,
@@ -120,7 +147,6 @@ class PluginsManager(StaticData):
:param group_id: 群组
:param block_type: 限制类型
"""
group_id = str(group_id) if group_id else group_id
if module:
if group_id:
if status == "block":
@@ -128,28 +154,11 @@ class PluginsManager(StaticData):
else:
group_manager.unblock_plugin(f"{module}:super", int(group_id))
else:
if module not in self._data.keys():
self.init_plugin(module)
if status == "block":
self._data[module]["status"] = False
self._data[module]["block_type"] = block_type
self._data[module].status = False
self._data[module].block_type = block_type
else:
if module in self._data.keys():
self._data[module]["status"] = True
self._data[module]["block_type"] = None
self._data[module].status = True
self._data[module].block_type = None
self.save()
def init_plugin(self, module: str):
"""
初始化插件数据
:param module: 模块名称
"""
if module not in self._data.keys():
self._data[module] = {
"plugin_name": module,
"status": True,
"error": False,
"block_type": None,
"author": None,
"version": None,
}