summaryrefslogtreecommitdiff
path: root/utils/utils_rule/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/utils_rule/__init__.py')
-rw-r--r--utils/utils_rule/__init__.py154
1 files changed, 154 insertions, 0 deletions
diff --git a/utils/utils_rule/__init__.py b/utils/utils_rule/__init__.py
new file mode 100644
index 0000000..aa7295e
--- /dev/null
+++ b/utils/utils_rule/__init__.py
@@ -0,0 +1,154 @@
+#!/usr/bin/env python3
+# -*- encoding: utf-8 -*-
+'''
+@File : __init__.py
+@Time : 2020/11/06 19:27:00
+@Author : Kyomotoi
+@Contact : [email protected]
+@Github : https://github.com/Kyomotoi
+@License : Copyright © 2018-2020 Kyomotoi, All Rights Reserved.
+'''
+__author__ = 'kyomotoi'
+
+import os
+import json
+from pathlib import Path
+from nonebot.rule import Rule
+from nonebot.typing import Bot, Event
+
+
+def check_banlist() -> Rule:
+ '''
+ 检查目标是否存在于封禁名单
+
+ :return: bool
+ '''
+ async def _chech_banlist(bot: Bot, event: Event, state: dict) -> bool:
+ # 获取目标信息
+ user = str(event.user_id)
+ group = str(event.group_id)
+
+ # 名单目录
+ file_user = Path('.') / 'utils' / 'utils_rule' / 'ban_list_user.json'
+ file_group = Path('.') / 'utils' / 'utils_rule' / 'ban_list_group.json'
+
+ # 检查文件是否存在,如不存在,自动创建并写入默认值
+ if not file_user.is_file():
+ file = open(file_user, 'w')
+ file.write(json.dumps({}))
+ file.close()
+
+ if not file_group.is_file():
+ file = open(file_group, 'w')
+ file.write(json.dumps({}))
+ file.close()
+
+ # 读取文件
+ with open(file_user, 'r') as f:
+ data_user = json.load(f)
+
+ with open(file_group, 'r') as f:
+ data_group = json.load(f)
+
+ # 判断目标
+ if user:
+ if user not in data_user:
+ if group:
+ if group not in data_group:
+ return True
+ else:
+ return False
+ else:
+ return True
+ else:
+ return False
+
+ elif group:
+ if group not in data_group:
+ if user:
+ if user not in data_user:
+ return True
+ else:
+ return False
+ else:
+ return True
+ else:
+ return False
+ else:
+ return False
+
+ return Rule(_chech_banlist)
+
+
+def check_switch(func_name: str) -> Rule:
+ '''
+ 检查目标功能是否开启
+
+ :return: bool
+ '''
+ async def _check_switch(bot: Bot, event: Event, state: dict) -> bool:
+ # 获取目标信息
+ group = str(event.group_id)
+
+ # 文件目录
+ file_switch_all = Path('.') / 'utils' / 'utils_rule' / 'switch.json'
+ file_switch_alone = Path(
+ '.') / 'ATRI' / 'data' / 'data_Group' / f'{group}' / 'switch.json'
+
+ # 检查文件是否存在,如不存在,自动创建并写入默认值
+ if not file_switch_all.is_file():
+ data_switch_all = {}
+ data_switch_all["anime-setu"] = "True"
+ data_switch_all["anime-pic-search"] = "True"
+ data_switch_all["anime-vid-search"] = "True"
+ data_switch_all["ai-face"] = "True"
+ data_switch_all["pixiv-pic-search"] = "True"
+ data_switch_all["pixiv-author-search"] = "True"
+ data_switch_all["pixiv-rank"] = "True"
+ data_switch_all["one-key-adult"] = "True"
+
+ file = open(file_switch_all, 'w')
+ file.write(json.dumps(data_switch_all))
+ file.close()
+
+ if not file_switch_alone.is_file():
+ data_switch_alone = {}
+
+ # 检查目标文件夹是否存在,如不存在自动创建
+ try:
+ os.mkdir(
+ Path('.') / 'ATRI' / 'data' / 'data_Group' / f'{group}')
+ except:
+ pass
+
+ data_switch_alone["anime-setu"] = "True"
+ data_switch_alone["anime-pic-search"] = "True"
+ data_switch_alone["anime-vid-search"] = "True"
+ data_switch_alone["ai-face"] = "True"
+ data_switch_alone["pixiv-pic-search"] = "True"
+ data_switch_alone["pixiv-author-search"] = "True"
+ data_switch_alone["pixiv-rank"] = "True"
+ data_switch_alone["one-key-adult"] = "True"
+
+ file = open(file_switch_alone, 'w')
+ file.write(json.dumps(data_switch_alone))
+ file.close()
+
+ # 读取文件
+ with open(file_switch_all, 'r') as f:
+ data_all = json.load(f)
+
+ with open(file_switch_alone, 'r') as f:
+ data_alone = json.load(f)
+
+ # 判断目标
+ if data_all[func_name] == "True":
+ if data_alone[func_name] == "True":
+ return True
+ else:
+ return False
+ else:
+ await bot.send(event, f"Service-{func_name} has been closed.")
+ return False
+
+ return Rule(_check_switch) \ No newline at end of file