diff --git a/robot.py b/robot.py index 845b9df..111bf95 100644 --- a/robot.py +++ b/robot.py @@ -181,7 +181,6 @@ class Robot(Job): self.allContacts = self.get_all_contacts() self.contact_manager.set_contacts(self.allContacts) - self.message_storage = MessageStorage(self.ipad_bot) # 初始化消息工具类 - 使用联系人管理器 @@ -514,26 +513,26 @@ class Robot(Job): self.LOG.error(f"获取联系人信息失败: {e}") return {} - def refresh_contacts_db(self): + async def refresh_contacts_db(self): """刷新联系人信息""" - #获取用户所有的联系人,并保存到数据库 + # 获取用户所有的联系人,并保存到数据库 self.LOG.info("开始刷新联系人信息") - #删除所有的联系人信息 + # 删除所有的联系人信息 self.contacts_db.delete_all_contacts() self.LOG.debug("已删除所有的联系人信息") - contacts = self.ipad_bot.get_contract_list() - self.LOG.debug(f"获取到的联系人数量:{len(contacts)}") - #获取联系人详细信息,get_contract_detail每次可以获取20个 - #每次获取20个,需要循环获取 + contacts = await self.ipad_bot.get_contract_list() + self.LOG.debug(f"获取到的联系人:{contacts}") + # 获取联系人详细信息,get_contract_detail每次可以获取20个 + # 每次获取20个,需要循环获取 # 将联系人列表分成每组20个 batch_size = 20 for i in range(0, len(contacts), 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.contacts_db.save_contacts(contact_info,"friends") + self.contacts_db.save_contacts(contact_info, "friends") # 获取群聊列表 groups = self.contacts_db.get_chatroom_list() @@ -541,7 +540,7 @@ class Robot(Job): for group in groups: # 调用接口获取群成员信息 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}") if chatroom_info: # 保存群信息到数据库 @@ -573,7 +572,7 @@ class Robot(Job): self.LOG.info(f"已更新群 {group_id} 的成员信息") else: self.LOG.error(f"获取群 {group_id} 信息失败,证明用户无该群信息,删除群的相关资料。") - #删除群数据库中的群信息 + # 删除群数据库中的群信息 self.contacts_db.delete_chatroom_member_info(group_id) self.LOG.info("联系人信息刷新完成") diff --git a/wechat_ipad/client/firends.py b/wechat_ipad/client/firends.py index 18a6afe..f9d13a0 100644 --- a/wechat_ipad/client/firends.py +++ b/wechat_ipad/client/firends.py @@ -99,15 +99,15 @@ class FriendMixin(WechatAPIClientBase): else: 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: wx_seq: 联系人序列 chatroom_seq: 群聊序列 Returns: - dict: 联系人列表数据 + list: 联系人用户名列表 """ if not self.wxid: raise UserLoggedOut("请先登录") @@ -118,7 +118,8 @@ class FriendMixin(WechatAPIClientBase): json_resp = await response.json() if json_resp.get("Success"): - return json_resp.get("Data") + # 直接返回联系人用户名列表 + return json_resp.get("Data").get("ContactUsernameList", []) else: self.error_handler(json_resp)