mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-09-29 08:39:59 +08:00
优化manager代码
This commit is contained in:
Executable → Regular
+66
-57
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user