[fix] (MessageHandler) 如果已经获取到足够的消息(达到 max_messages),停止获取,获取到的消息数量是最新一次获取到的超过 max_message 的消息数量 (#29)

This commit is contained in:
SXP-Simon
2025-11-03 11:59:34 +08:00
parent 40b65768de
commit 28dbc0b854
+7 -2
View File
@@ -73,7 +73,7 @@ class MessageHandler:
logger.info(f"开始获取群 {group_id}{days} 天的消息记录")
logger.info(f"时间范围: {start_time.strftime('%Y-%m-%d %H:%M:%S')}{end_time.strftime('%Y-%m-%d %H:%M:%S')}")
while len(messages) < max_messages and query_rounds < max_rounds:
while query_rounds < max_rounds:
try:
# 构造请求参数
payloads = {
@@ -156,6 +156,11 @@ class MessageHandler:
logger.warning(f"{group_id} 本轮未获取到有效消息")
break
# 如果已经获取到足够的消息(达到 max_messages),停止获取
if len(messages) >= max_messages:
logger.info(f"{group_id} 已获取到足够的消息({len(messages)} 条,限制 {max_messages} 条),停止获取")
break
message_seq = round_messages[0]["message_id"]
query_rounds += 1
@@ -171,7 +176,7 @@ class MessageHandler:
break
await asyncio.sleep(1)
logger.info(f"{group_id} 消息获取完成,共获取 {len(messages)}消息,查询轮数: {query_rounds}")
logger.info(f"{group_id} 消息获取完成,共获取 {len(messages)}有效消息(时间范围: 近{days}天),查询轮数: {query_rounds}")
return messages
except Exception as e: