summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2023-06-22 21:20:12 +0800
committerKyomotoi <[email protected]>2023-06-22 21:20:12 +0800
commite819d8e877e2499c21d825d58e030dd3a1064172 (patch)
tree0844f0b39afe0222d51e62c7758bce75a68312b6
parente165f3fc1b3436dd0543fe1fc95c02721fd70f1a (diff)
downloadATRI-e819d8e877e2499c21d825d58e030dd3a1064172.tar.gz
ATRI-e819d8e877e2499c21d825d58e030dd3a1064172.tar.bz2
ATRI-e819d8e877e2499c21d825d58e030dd3a1064172.zip
🚑️ 修复申请操作类数据读取错误
-rw-r--r--ATRI/plugins/manage/__init__.py24
-rw-r--r--ATRI/plugins/manage/data_source.py34
-rw-r--r--ATRI/plugins/manage/models.py5
3 files changed, 40 insertions, 23 deletions
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