SK-415 / HarukaBot

将 B 站的动态和直播信息推送至 QQ,基于 NoneBot2 开发
https://haruka-bot.sk415.icu
GNU Affero General Public License v3.0
836 stars 106 forks source link

【错误回报】推送遗漏动态 #347

Closed boxie123 closed 1 year ago

boxie123 commented 1 year ago

运行环境

Windows Server 2012

HarukaBot 版本

v1.5.3.post2

go-cqhttp 版本

rc5

错误描述

虽然听起来很离谱,但它确实发生了

在今天,有一条动态没被爬取到,并且没有任何报错,经排查发现:

关注的up在一个轮询间隔内,发了一条新动态,把那条动态设置成了置顶,并马上发了另一条动态。

因为遍历时置顶在最后一个,而且前面还有一条更新的动态,所以置顶并没有被爬取到。

顺带一提,时间间隔设置是0。

建议

haruka_bot\plugins\pusher\dynamic_pusher.py 中第67行

for dynamic in dynamics[::-1]:  # 动态从旧到新排列

修改为

for dynamic in sorted(dynamics, key=lambda x: int(x.extend.dyn_id_str)):  # 动态从旧到新排列

报错日志(如果有)

No response

boxie123 commented 1 year ago

延伸出另一个问题,如果在bot爬取完最新动态之后,前一条动态才过审,那前一条就不会推送。

或许offset[uid]中可以存储更多条动态的id增加容错率。

boxie123 commented 1 year ago

348 已创建pr

SK-415 commented 1 year ago

感谢 PR,遗漏问题已修复 https://github.com/SK-415/HarukaBot/commit/931f29218973be4dc93f36f1552d98860ba2a45d ,动态审核问题 B 站自己都不管(过审的动态依然按照审核前的发送时间,显示在动态列表很下面),所以 hb 这边也不考虑优化。