From e819d8e877e2499c21d825d58e030dd3a1064172 Mon Sep 17 00:00:00 2001 From: Kyomotoi <0w0@imki.moe> Date: Thu, 22 Jun 2023 21:20:12 +0800 Subject: =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20=E4=BF=AE=E5=A4=8D=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E6=93=8D=E4=BD=9C=E7=B1=BB=E6=95=B0=E6=8D=AE=E8=AF=BB?= =?UTF-8?q?=E5=8F=96=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ATRI/plugins/manage/__init__.py | 24 ++++++++++++++---------- ATRI/plugins/manage/data_source.py | 34 +++++++++++++++++++++------------- ATRI/plugins/manage/models.py | 5 +++++ 3 files changed, 40 insertions(+), 23 deletions(-) (limited to 'ATRI') diff --git a/ATRI/plugins/manage/__init__.py b/ATRI/plugins/manage/__init__.py index 698c29f..7fa4a56 100644 --- a/ATRI/plugins/manage/__init__.py +++ b/ATRI/plugins/manage/__init__.py @@ -154,8 +154,9 @@ async def _(event: FriendRequestEvent): apply_comment = event.comment now_time = str(datetime.now().timestamp()) - data = await BotManager().load_friend_req() - data[apply_code] = RequestInfo( # type: ignore + raw_data = await BotManager().load_friend_req() + data = raw_data.dict() + data["data"][apply_code] = RequestInfo( user_id=user_id, comment=apply_comment, time=now_time, @@ -186,8 +187,9 @@ async def _(event: GroupRequestEvent): apply_comment = event.comment now_time = str(datetime.now().timestamp()) - data = await BotManager().load_group_req() - data[apply_code] = RequestInfo( # type: ignore + raw_data = await BotManager().load_group_req() + data = raw_data.dict() + data["data"][apply_code] = RequestInfo( user_id=user_id, comment=apply_comment + f"(目标群{target_group})", time=now_time, @@ -215,10 +217,11 @@ async def _(): await get_friend_req_list.finish("当前没有申请") cache_list = list() - for i in data: + for i in data.data: apply_code = i - apply_user = data[i].user_id - apply_comment = data[i].comment + apply_data = data.data[i] + apply_user = apply_data.user_id + apply_comment = apply_data.comment cache_list.append(f"{apply_user} | {apply_comment} | {apply_code}") result = ( @@ -239,10 +242,11 @@ async def _(): await get_group_req_list.finish("当前没有申请") cache_list = list() - for i in data: + for i in data.data: apply_code = i - apply_user = data[i].user_id - apply_comment = data[i].comment + apply_data = data.data[i] + apply_user = apply_data.user_id + apply_comment = apply_data.comment cache_list.append(f"{apply_user} | {apply_comment} | {apply_code}") result = ( diff --git a/ATRI/plugins/manage/data_source.py b/ATRI/plugins/manage/data_source.py index ef7cfb4..45adae1 100644 --- a/ATRI/plugins/manage/data_source.py +++ b/ATRI/plugins/manage/data_source.py @@ -11,7 +11,7 @@ from ATRI.service import ServiceTools from ATRI.message import MessageBuilder from ATRI.exceptions import load_error -from .models import RequestInfo +from .models import RequestList MANAGE_DIR = Path(".") / "data" / "plugins" / "manage" @@ -60,14 +60,14 @@ class BotManager: async def __store_block_user(self, data: dict) -> None: await self.__store_data("block_user.json", data) - async def load_friend_req(self) -> Dict[str, RequestInfo]: - return await self.__load_data("friend_add.json") + async def load_friend_req(self) -> RequestList: + return RequestList.parse_obj(await self.__load_data("friend_add.json")) async def store_friend_req(self, data: dict) -> None: await self.__store_data("friend_add.json", data) - async def load_group_req(self) -> Dict[str, RequestInfo]: - return await self.__load_data("group_invite.json") + async def load_group_req(self) -> RequestList: + return RequestList.parse_obj(await self.__load_data("group_invite.json")) async def store_group_req(self, data: dict) -> None: await self.__store_data("group_invite.json", data) @@ -184,9 +184,11 @@ class BotManager: await bot.call_api("set_friend_add_request", flag=code, approve=True) except Exception: raise Exception("同意失败,请尝试手动同意") - data = await self.load_friend_req() + raw_data = await self.load_friend_req() + data = raw_data.data data.pop(code) - await self.store_friend_req(data) + raw_data.data = data + await self.store_friend_req(raw_data.dict()) async def reject_friend_req(self, code: str) -> None: bot = self.__get_bot() @@ -194,9 +196,11 @@ class BotManager: await bot.call_api("set_friend_add_request", flag=code, approve=False) except Exception: raise Exception("拒绝失败,请尝试手动拒绝") - data = await self.load_friend_req() + raw_data = await self.load_friend_req() + data = raw_data.data data.pop(code) - await self.store_friend_req(data) + raw_data.data = data + await self.store_friend_req(raw_data.dict()) async def apply_group_req(self, code: str) -> None: bot = self.__get_bot() @@ -206,9 +210,11 @@ class BotManager: ) except Exception: raise Exception("同意失败,请尝试手动同意") - data = await self.load_group_req() + raw_data = await self.load_group_req() + data = raw_data.data data.pop(code) - await self.store_group_req(data) + raw_data.data = data + await self.store_group_req(raw_data.dict()) async def reject_group_req(self, code: str) -> None: bot = self.__get_bot() @@ -218,6 +224,8 @@ class BotManager: ) except Exception: raise Exception("拒绝失败,请尝试手动拒绝") - data = await self.load_group_req() + raw_data = await self.load_group_req() + data = raw_data.data data.pop(code) - await self.store_group_req(data) + raw_data.data = data + await self.store_group_req(raw_data.dict()) diff --git a/ATRI/plugins/manage/models.py b/ATRI/plugins/manage/models.py index 1ad8eaf..91e6f77 100644 --- a/ATRI/plugins/manage/models.py +++ b/ATRI/plugins/manage/models.py @@ -1,3 +1,4 @@ +from typing import Dict from pydantic import BaseModel @@ -7,6 +8,10 @@ class RequestInfo(BaseModel): time: str +class RequestList(BaseModel): + data: Dict[str, RequestInfo] + + class NonebotPluginInfo(BaseModel): module_name: str project_link: str -- cgit v1.2.3