zhenxun_bot/utils/manager/admin_manager.py

81 lines
2.1 KiB
Python
Raw Normal View History

2022-11-21 20:43:41 +08:00
from .models import AdminSetting
from utils.manager.data_class import StaticData
from typing import List, Optional, Dict
2021-10-03 15:35:30 +08:00
class AdminManager(StaticData):
"""
管理员命令 管理器
"""
def __init__(self):
super().__init__(None)
2022-11-21 20:43:41 +08:00
self._data: Dict[str, AdminSetting] = {}
2021-10-03 15:35:30 +08:00
2021-11-04 16:11:50 +08:00
def add_admin_plugin_settings(self, plugin: str, cmd: List[str], level: int):
2021-10-03 15:35:30 +08:00
"""
2022-11-21 20:43:41 +08:00
说明:
添加一个管理员命令
参数:
:param plugin: 模块
:param cmd: 别名
:param level: 等级
2021-11-04 16:11:50 +08:00
"""
2022-11-21 20:43:41 +08:00
self._data[plugin] = AdminSetting(level=level, cmd=cmd)
2021-11-04 16:11:50 +08:00
def set_admin_level(self, plugin: str, level: int):
"""
2022-11-21 20:43:41 +08:00
说明:
设置管理员命令等级
参数:
:param plugin: 模块名
:param level: 权限等级
2021-10-03 15:35:30 +08:00
"""
2022-11-21 20:43:41 +08:00
if plugin in self._data.keys():
self._data[plugin].level = level
2021-10-03 15:35:30 +08:00
2021-11-04 16:11:50 +08:00
def remove_admin_plugin_settings(self, plugin: str):
2021-10-03 15:35:30 +08:00
"""
2022-11-21 20:43:41 +08:00
说明:
删除一个管理员命令
参数:
:param plugin: 模块名
2021-10-03 15:35:30 +08:00
"""
if plugin in self._data.keys():
del self._data[plugin]
def check(self, plugin: str, level: int) -> bool:
"""
2022-11-21 20:43:41 +08:00
说明:
检查是否满足权限
参数:
:param plugin: 模块名
:param level: 权限等级
2021-10-03 15:35:30 +08:00
"""
if plugin in self._data.keys():
2022-11-21 20:43:41 +08:00
return level >= self._data[plugin].level
2021-10-03 15:35:30 +08:00
return True
def get_plugin_level(self, plugin: str) -> int:
"""
2022-11-21 20:43:41 +08:00
说明:
获取插件等级
参数:
:param plugin: 模块名
2021-10-03 15:35:30 +08:00
"""
if plugin in self._data.keys():
2022-11-21 20:43:41 +08:00
return self._data[plugin].level
2021-10-03 15:35:30 +08:00
return 0
2021-11-04 16:11:50 +08:00
def get_plugin_module(self, cmd: str) -> Optional[str]:
"""
2022-11-21 20:43:41 +08:00
说明:
根据 cmd 获取功能 modules
参数:
:param cmd: 命令
2021-11-04 16:11:50 +08:00
"""
for key in self._data.keys():
2022-11-21 20:43:41 +08:00
if self._data[key].cmd and cmd in self._data[key].cmd:
2021-11-04 16:11:50 +08:00
return key
return None