summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ATRI/permission.py35
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")