summaryrefslogtreecommitdiff
path: root/ATRI/plugins/manage/modules/request.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/plugins/manage/modules/request.py')
1 files changed, 121 insertions, 0 deletions
diff --git a/ATRI/plugins/manage/modules/request.py b/ATRI/plugins/manage/modules/request.py
new file mode 100644
index 0000000..c90ed66
--- /dev/null
+++ b/ATRI/plugins/manage/modules/request.py
@@ -0,0 +1,121 @@
+import re
+import json
+from pathlib import Path
+
+from nonebot.typing import T_State
+from nonebot.permission import SUPERUSER
+from nonebot.adapters.cqhttp import Bot, MessageEvent
+
+from ATRI.service import Service as sv
+from ATRI.exceptions import ReadFileError, FormatError
+
+
+ESSENTIAL_DIR = Path('.') / 'ATRI' / 'data' / 'database' / 'essential'
+
+
+__doc__ = """
+查看好友/群申请列表
+权限组:维护者
+用法:
+ 查看申请列表
+"""
+
+req_list = sv.on_command(
+ cmd="申请列表",
+ docs=__doc__,
+ permission=SUPERUSER
+)
+
+@req_list.handle()
+async def _req_list(bot: Bot, event: MessageEvent, state: T_State) -> None:
+ path_f = ESSENTIAL_DIR / 'request_friend.json'
+ path_g = ESSENTIAL_DIR / 'request_group.json'
+ data_f, data_g = dict()
+ try:
+ data_f = json.loads(path_f.read_bytes())
+ except ReadFileError:
+ msg_f = "[读取文件失败]"
+ try:
+ data_g = json.loads(path_g.read_bytes())
+ except ReadFileError:
+ msg_g = "[读取文件失败]"
+
+ msg_f = str()
+ for i in data_f.keys():
+ msg_f += f"{i} | {data_f[i]['user_id']} | {data_f[i]['comment']}\n"
+
+ msg_g = str()
+ for i in data_g.keys():
+ msg_g += f"{i} | {data_g[i]['sub_type']} | {data_g[i]['user_id']} | {data_g[i]['comment']}\n"
+
+ msg = (
+ "好友/群申请列表如下:\n"
+ "· 好友:\n"
+ f"{msg_f}"
+ "· 群:\n"
+ f"{msg_g}"
+ )
+ await req_list.finish(msg)
+
+
+req_deal = sv.on_regex(
+ r'[同意|拒绝][好友|群]申请',
+ permission=SUPERUSER
+)
+
+@req_deal.handle()
+async def _req_deal(bot: Bot, event: MessageEvent, state: T_State) -> None:
+ msg = str(event.message).split(' ')
+ arg = re.findall(r'[同意|拒绝][好友|群]申请', msg[0])
+ app = arg[0]
+ _type = arg[1]
+
+ if not msg[1]:
+ await req_deal.finish(f'正确用法!速看\n{app}{_type}申请 (reqid)')
+
+ path = ESSENTIAL_DIR / "request_group.json"
+ data_g = dict()
+ try:
+ data_g = json.loads(path.read_bytes())
+ except FileExistsError:
+ await req_deal.finish("读取群数据失败,可能并没有请求...")
+
+ reqid = msg[1]
+ if app == "同意":
+ if _type == "好友":
+ try:
+ await bot.set_friend_add_request(flag=reqid,
+ approve=True)
+ await req_deal.finish(f"完成~!已同意申请")
+ except FormatError:
+ await req_deal.finish('请检查输入的值是否正确——!')
+ elif _type == "群":
+ try:
+ await bot.set_group_add_request(flag=reqid,
+ sub_type=data_g[reqid]['sub_type'],
+ approve=True)
+ await req_deal.finish(f"完成~!已同意申请")
+ except FormatError:
+ await req_deal.finish('请检查输入的值是否正确——!')
+ else:
+ await req_deal.finish('请检查输入的值是否正确——!')
+ elif app == "拒绝":
+ if _type == "好友":
+ try:
+ await bot.set_friend_add_request(flag=reqid,
+ approve=False)
+ await req_deal.finish(f"完成~!已拒绝申请")
+ except FormatError:
+ await req_deal.finish('请检查输入的值是否正确——!')
+ elif _type == "群":
+ try:
+ await bot.set_group_add_request(flag=reqid,
+ sub_type=data_g[reqid]['sub_type'],
+ approve=False)
+ await req_deal.finish(f"完成~!已拒绝申请")
+ except FormatError:
+ await req_deal.finish('请检查输入的值是否正确——!')
+ else:
+ await req_deal.finish('请检查输入的值是否正确——!')
+ else:
+ await req_deal.finish('请检查输入的值是否正确——!')