diff --git a/robot.py b/robot.py index c4285fb..f2f92c6 100644 --- a/robot.py +++ b/robot.py @@ -669,7 +669,7 @@ class Robot: return for r in receivers: if self.gbm.get_group_permission(r, Feature.DAILY_SUMMARY) == PermissionStatus.ENABLED: - output = self.message_storage.generate_and_send_ranking(r, self.allContacts) + output = await self.message_storage.generate_and_send_ranking(r, self.allContacts) await self.ipad_bot.send_text_message(r, output) except Exception as e: self.LOG.error(f"SendRanking error:{e}") diff --git a/utils/wechat/message_to_db.py b/utils/wechat/message_to_db.py index 3b7811d..1596d52 100644 --- a/utils/wechat/message_to_db.py +++ b/utils/wechat/message_to_db.py @@ -239,7 +239,7 @@ class MessageStorage: except Exception as e: logging.error(f"写入发言统计出错: {e}") - def generate_and_send_ranking(self, groupId, allContacts: dict): + async def generate_and_send_ranking(self, groupId, allContacts: dict): """生成并发送群聊发言排名,并根据排名发放积分奖励""" try: yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d') @@ -257,8 +257,11 @@ class MessageStorage: for rank, result in enumerate(results, start=1): username = result['wx_id'] speech_count = result['speech_count'] - display_name = self.client.get_chatroom_nickname(username, groupId) - + display_name = await self.client.get_chatroom_nickname(username, groupId) + if isinstance(display_name, str): + display_name = display_name + else: + display_name = ','.join(display_name) # 根据排名发放不同数量的积分 reward_points = 0 if rank == 1: