diff options
-rw-r--r-- | ATRI/permission.py | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/ATRI/permission.py b/ATRI/permission.py index e16c4c0..3d378a3 100644 --- a/ATRI/permission.py +++ b/ATRI/permission.py @@ -5,20 +5,29 @@ from nonebot.permission import Permission as _Permission from nonebot.adapters.onebot.v11 import GroupMessageEvent from ATRI import conf +from ATRI.utils import FileDealer from ATRI.configs.config import CONFIG_DATA_PATH MASTER_FILE_PATH = CONFIG_DATA_PATH / "master.json" -if not MASTER_FILE_PATH.is_file(): - with open(MASTER_FILE_PATH, "w") as w: - w.write(json.dumps(list())) - +MASTER_FILE = FileDealer(MASTER_FILE_PATH) MASTER_LIST = set() +def create_master_file(): + if not MASTER_FILE_PATH.is_file(): + data = dict() + for i in conf.BotConfig.superusers: + data[i] = {"is_conf": True} + + with open(MASTER_FILE_PATH, "w") as w: + w.write(json.dumps(data)) + + def init_permission(): global MASTER_LIST - data = json.loads(MASTER_FILE_PATH.read_bytes()) + create_master_file() + data = MASTER_FILE.json() MASTER_LIST = set.union(set(data), conf.BotConfig.superusers) @@ -29,7 +38,7 @@ def is_master(bot: Bot, event: Event) -> bool: except Exception: return False - return True if user_id in MASTER_LIST else False + return user_id in MASTER_LIST class Permission(_Permission): @@ -40,12 +49,15 @@ class Permission(_Permission): Args: name (str): 权限的名称 + + Returns: + Permission: self """ self.name = name return self -class MasterList: +class Master: """检查当前事件是否属于主人""" __slots__ = () @@ -55,7 +67,10 @@ class MasterList: class Admin: - """检查当前事件是否属于管理员""" + """ + 检查当前事件是否属于管理员 + 其包括:主人、群主、群管理 + """ __slots__ = () @@ -63,11 +78,11 @@ class Admin: async def __call__(self, bot: Bot, event: Event) -> bool: if isinstance(event, GroupMessageEvent): - return True if event.sender.role in ["admin", "owner"] else False + return event.sender.role in ["admin", "owner"] else: return is_master(bot, event) init_permission() -MASTER = Permission(MasterList()).set_name("Master") +MASTER = Permission(Master()).set_name("Master") ADMIN = Permission(Admin()).set_name("Admin") |