summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2022-10-17 23:42:18 +0800
committerKyomotoi <[email protected]>2022-10-17 23:42:18 +0800
commitdc2eae9d3c3e03fdc36a422a1d75d244cf607286 (patch)
tree2eb5d2d5061d22783edd999dbc17d7e2d5165b97
parent7294539561d38f0202d6d5fde195551534f28cd6 (diff)
downloadATRI-dc2eae9d3c3e03fdc36a422a1d75d244cf607286.tar.gz
ATRI-dc2eae9d3c3e03fdc36a422a1d75d244cf607286.tar.bz2
ATRI-dc2eae9d3c3e03fdc36a422a1d75d244cf607286.zip
✨ 整合权限
-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