添加 刷新通讯录功能,用于解决冗余数据问题。

This commit is contained in:
liuwei
2025-05-07 12:06:50 +08:00
parent f0835868df
commit 5bcb12ce91
2 changed files with 16 additions and 16 deletions

View File

@@ -181,7 +181,6 @@ class Robot(Job):
self.allContacts = self.get_all_contacts() self.allContacts = self.get_all_contacts()
self.contact_manager.set_contacts(self.allContacts) self.contact_manager.set_contacts(self.allContacts)
self.message_storage = MessageStorage(self.ipad_bot) self.message_storage = MessageStorage(self.ipad_bot)
# 初始化消息工具类 - 使用联系人管理器 # 初始化消息工具类 - 使用联系人管理器
@@ -514,15 +513,15 @@ class Robot(Job):
self.LOG.error(f"获取联系人信息失败: {e}") self.LOG.error(f"获取联系人信息失败: {e}")
return {} return {}
def refresh_contacts_db(self): async def refresh_contacts_db(self):
"""刷新联系人信息""" """刷新联系人信息"""
# 获取用户所有的联系人,并保存到数据库 # 获取用户所有的联系人,并保存到数据库
self.LOG.info("开始刷新联系人信息") self.LOG.info("开始刷新联系人信息")
# 删除所有的联系人信息 # 删除所有的联系人信息
self.contacts_db.delete_all_contacts() self.contacts_db.delete_all_contacts()
self.LOG.debug("已删除所有的联系人信息") self.LOG.debug("已删除所有的联系人信息")
contacts = self.ipad_bot.get_contract_list() contacts = await self.ipad_bot.get_contract_list()
self.LOG.debug(f"获取到的联系人数量{len(contacts)}") self.LOG.debug(f"获取到的联系人:{contacts}")
# 获取联系人详细信息,get_contract_detail每次可以获取20个 # 获取联系人详细信息,get_contract_detail每次可以获取20个
# 每次获取20个需要循环获取 # 每次获取20个需要循环获取
# 将联系人列表分成每组20个 # 将联系人列表分成每组20个
@@ -531,7 +530,7 @@ class Robot(Job):
# 获取当前批次的联系人 # 获取当前批次的联系人
batch_contacts = contacts[i:i + batch_size] batch_contacts = contacts[i:i + batch_size]
# 获取这批联系人的详细信息 # 获取这批联系人的详细信息
contact_info = self.ipad_bot.get_contract_detail(batch_contacts) contact_info = await self.ipad_bot.get_contract_detail(batch_contacts)
self.LOG.debug(f"获取到的联系人详细信息数量:{len(contact_info)}") self.LOG.debug(f"获取到的联系人详细信息数量:{len(contact_info)}")
self.contacts_db.save_contacts(contact_info, "friends") self.contacts_db.save_contacts(contact_info, "friends")
@@ -541,7 +540,7 @@ class Robot(Job):
for group in groups: for group in groups:
# 调用接口获取群成员信息 # 调用接口获取群成员信息
group_id = group["UserName"] group_id = group["UserName"]
chatroom_info = self.ipad_bot.get_chatroom_info(group_id) chatroom_info = await self.ipad_bot.get_chatroom_info(group_id)
self.LOG.debug(f"获取到的群成员信息:{chatroom_info}") self.LOG.debug(f"获取到的群成员信息:{chatroom_info}")
if chatroom_info: if chatroom_info:
# 保存群信息到数据库 # 保存群信息到数据库

View File

@@ -99,15 +99,15 @@ class FriendMixin(WechatAPIClientBase):
else: else:
self.error_handler(json_resp) self.error_handler(json_resp)
async def get_contract_list(self, wx_seq: int = 0, chatroom_seq: int = 0) -> dict: async def get_contract_list(self, wx_seq: int = 0, chatroom_seq: int = 0) -> list:
"""获取联系人列表 """获取联系人用户名列表
Args: Args:
wx_seq: 联系人序列 wx_seq: 联系人序列
chatroom_seq: 群聊序列 chatroom_seq: 群聊序列
Returns: Returns:
dict: 联系人列表数据 list: 联系人用户名列表
""" """
if not self.wxid: if not self.wxid:
raise UserLoggedOut("请先登录") raise UserLoggedOut("请先登录")
@@ -118,7 +118,8 @@ class FriendMixin(WechatAPIClientBase):
json_resp = await response.json() json_resp = await response.json()
if json_resp.get("Success"): if json_resp.get("Success"):
return json_resp.get("Data") # 直接返回联系人用户名列表
return json_resp.get("Data").get("ContactUsernameList", [])
else: else:
self.error_handler(json_resp) self.error_handler(json_resp)