summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ATRI/permission.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/ATRI/permission.py b/ATRI/permission.py
new file mode 100644
index 0000000..1bd2e84
--- /dev/null
+++ b/ATRI/permission.py
@@ -0,0 +1,33 @@
+import json
+
+from nonebot.adapters import Bot, Event
+from nonebot.permission import SUPERUSER, Permission
+from nonebot.adapters.onebot.v11 import GROUP_OWNER, GROUP_ADMIN as _GROUP_ADMIN
+
+from ATRI.configs.config import CONFIG_PATH
+
+
+MASTER_FILE_PATH = CONFIG_PATH / "master.json"
+if not MASTER_FILE_PATH.is_file():
+ with open(MASTER_FILE_PATH, "w") as w:
+ w.write(json.dumps(list()))
+
+
+class MasterList:
+ """检查当前事件是否属于主人"""
+
+ __slots__ = ()
+
+ async def __call__(self, bot: Bot, event: Event) -> bool:
+ try:
+ user_id = event.get_user_id()
+ except Exception:
+ return False
+
+ data = json.loads(MASTER_FILE_PATH.read_bytes())
+ return True if user_id in data else False
+
+
+MASTER = SUPERUSER | Permission(MasterList())
+GROUP_ADMIN = GROUP_OWNER | _GROUP_ADMIN
+ADMIN = MASTER | GROUP_ADMIN