反向转发频道相册时最后一个相册未发送的技术问题
反向迭代频道消息时最后一个相册未处理的问题
问题描述
我已经掌握将相册从一个频道转发至另一个频道的方法,但开启reverse=True按旧到新顺序迭代消息时,最后一个相册始终无法完成转发。
正向正常运行的代码
current_album = None current_group_id = None async for message in client.iter_messages(test_channel_id): if current_group_id and message.grouped_id != current_group_id: print('Group finished:', current_group_id, 'had', len(current_album)) current_group_id = None current_album = None if not current_group_id and message.grouped_id: print('New group:', message.grouped_id) current_group_id = message.grouped_id current_album = [] if current_group_id: current_album.append(message)
反向迭代存在问题的代码
current_album = None current_group_id = None async for message in client.iter_messages(test_channel_id, reverse=True): if current_group_id and message.grouped_id != current_group_id: print('Group finished:', current_group_id, 'had', len(current_album)) current_group_id = None current_album = None if not current_group_id and message.grouped_id: print('New group:', message.grouped_id) current_group_id = message.grouped_id current_album = [] if current_group_id: current_album.append(message)
问题根源
当前代码仅在遇到下一个不同group_id的消息时,才会处理上一组相册。但最后一组相册之后没有更多消息,循环直接终止,导致这组相册留在current_album中从未被处理。反向迭代时这个问题更突出,因为最后被遍历的是最早的相册,没有后续消息触发处理逻辑。
修复后的代码
在循环结束后,额外检查是否存在未处理的相册组,执行收尾操作:
current_album = None current_group_id = None async for message in client.iter_messages(test_channel_id, reverse=True): if current_group_id and message.grouped_id != current_group_id: print('Group finished:', current_group_id, 'had', len(current_album)) # 在此处添加相册转发逻辑 current_group_id = None current_album = None if not current_group_id and message.grouped_id: print('New group:', message.grouped_id) current_group_id = message.grouped_id current_album = [] if current_group_id: current_album.append(message) # 处理循环结束后剩余的最后一组相册 if current_group_id and current_album: print('Group finished:', current_group_id, 'had', len(current_album)) # 在此处添加最后一个相册的转发逻辑 current_group_id = None current_album = None
这样无论正向还是反向迭代,所有相册组都会被完整处理。
内容的提问来源于stack exchange,提问作者Umper
相关产品推荐
相关产品推荐

