diff --git a/admin_manager.py b/admin_manager.py new file mode 100644 index 00000000..c050ad16 --- /dev/null +++ b/admin_manager.py @@ -0,0 +1,51 @@ +from typing import Optional, Dict +from .data_class import StaticData +from utils.utils import FreqLimiter +from services.log import logger +from pathlib import Path + + +class AdminManager(StaticData): + """ + 管理员命令 管理器 + """ + + def __init__(self): + super().__init__(None) + + def add_admin_command(self, plugin: str, level: int): + """ + 添加一个管理员命令 + :param plugin: 模块名 + :param level: 权限等级 + """ + self._data[plugin] = level + + def remove_admin_command(self, plugin: str): + """ + 删除一个管理员命令 + :param plugin: 模块名 + """ + if plugin in self._data.keys(): + del self._data[plugin] + + def check(self, plugin: str, level: int) -> bool: + """ + 检查是否满足权限 + :param plugin: 模块名 + :param level: 权限等级 + """ + if plugin in self._data.keys(): + return level >= self._data[plugin] + return True + + def get_plugin_level(self, plugin: str) -> int: + """ + 获取插件等级 + :param plugin: 模块名 + """ + if plugin in self._data.keys(): + return self._data[plugin] + return 0 + +