Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]重启gewe的时候机器人会疯狂发消息(登录时不选择 同步最近消息 可以解决) #421

Closed
2 tasks done
TheAutomatic opened this issue Feb 8, 2025 · 14 comments
Labels
bug Something isn't working

Comments

@TheAutomatic
Copy link

发生了什么

如题,瞬间消息爆炸,机器人不断地读取过往记录,在互动过的群聊中疯狂输出

Image

如何复现?

重启gewe的docker

AstrBot 版本与部署方式

群晖DSM 7.2.1-69057 Update 5中使用Container manager 20.10.23-1437。Astrbot目前已经更新到v3.4.22

操作系统

Other

额外信息

吓得我赶紧重启astrbot,日志已经被清空,回复消息也停了,不确定是消息已经发完了,还是通过重启阻止了它继续发送

你愿意提交 PR 吗?

  • 是的,我愿意提交 PR!

Code of Conduct

@TheAutomatic TheAutomatic added the bug Something isn't working label Feb 8, 2025
@TheAutomatic
Copy link
Author

我又尝试先重启gewe,关闭astrbot,过了几分钟再启动bot,先是没啥动静,但给gewe小号发送一条消息,小号又开始刷屏,疯狂根据以前的聊天请求消息然后各个群里回复。感觉是个很严重的问题……

@Soulter
Copy link
Owner

Soulter commented Feb 8, 2025

这个等会会修复 感谢反馈

@Soulter
Copy link
Owner

Soulter commented Feb 8, 2025

Hi, 我已经尝试修复了此问题,但是我没能复现出这个问题,请问可以升级到 d3d7c1d 这一个提交,然后试一下吗?

@TheAutomatic
Copy link
Author

TheAutomatic commented Feb 8, 2025

老哥好,我试了一下似乎行不通。
首先我不太懂怎么更新,我尝试的做法是把文件下载下来上传到对应的Astrbot docker映射文件夹,找到astrbot/core/platform/sources/gewechat/client.py,然后替换新的文件。
然后保存机器人的配置,以使机器人重启,接着重启gewe并且给gewe发消息,发现收到一堆消息。
于是我重启docker(按理说没必要重启docker吧?更新版本都不需要),然后再次重启gewe并且给gewe发消息,发现还是收到一堆消息。

如果我前面更新并保存配置的方式没错的话,可能是代码的问题。
于是我看代码,好像你给消息加了个时间戳,忽略30s以前的消息。
但是结合日志来看,似乎是log里全部认为是新发来的消息,所以这个修复方法应该是没效果的吧?
另外就是消息也不是全都一起发送的,会先发一串,再发一串,不知道是什么原理,莫非和gewe有关?

鉴于log里有很多人的id,只好这样截图发给你先看一下日志(随便截图了几段),如果需要详细的日志,可以试试换个别的办法发给你。

Image

Image

Image

Image

Image

Image

@TheAutomatic
Copy link
Author

1.想到一个临时解决思路,是不是可以让机器人在接收gewe消息的时候看一下同一秒内是否收到了(总计或来自单一对话)的太多条信息。

2.另外不确定造成这个的原因是不是只有gewe接收了消息,而没有去手机端点开看消息,所以对于重新登录的gewe来说,这些还是未读信息?这个我待会儿拿到备用机再试一下好了…

@TheAutomatic
Copy link
Author

TheAutomatic commented Feb 9, 2025

作者你好,我更新到 v3.4.23 好像是修复了,消息列表里出现了一大堆: [12:27:54| WARNING] [client.py:78]: 消息时间戳过旧: 1739074446,当前时间戳: 1739076235.251233。那么难道我之前手动更新.py的方式不对?如果是的话请告诉我合理的更新测试代码的方法,谢谢

既然更新版本有用,我前面的理解可能有误,虽然那些日志上输出都是同一时间,但可能实际信息处理还是按原始消息计算的吧,所以似乎这个修复是有效的。

目前唯一的小问题(无伤大雅)是:重启gewe后,前2-3条消息似乎不会被处理,日志也先不会显示(也许会导致其他用户以为消息系统出问题了),然后继续发消息就会刷出一堆“消息时间戳过旧”,而且是接下来的几条发送之后,日志里都会刷出一堆,不是第一条消息就全部清空了,大概发了3-4条消息之后开始恢复正常,微信能够正常问答,刚才不被处理的2-3消息也开始响应了。

另外我测试发现刚才上一条回复评论的猜想并不正确:实际手机端点开消息后再重启gewe,还是会导致日志里一堆消息……

@MultiPieT
Copy link

貌似在新版本并没有修复,这一情况发生在我安装插件后并重启启动器后发生。这很严重,这一问题导致bot在不同的群里回复之前的消息。它们都带有[reply]标签。

@TheAutomatic
Copy link
Author

貌似在新版本并没有修复,这一情况发生在我安装插件后并重启启动器后发生。这很严重,这一问题导致bot在不同的群里回复之前的消息。它们都带有[reply]标签。

好像是这么回事?我记得以前安装插件不会触发gewe发消息来着。
不过我没遇到你的问题,我只在日志里看见消息时间戳过旧

@Soulter
Copy link
Owner

Soulter commented Feb 10, 2025

貌似在新版本并没有修复,这一情况发生在我安装插件后并重启启动器后发生。这很严重,这一问题导致bot在不同的群里回复之前的消息。它们都带有[reply]标签。

hello, v3.4.23及之后版本仍然这样吗?@MultiPieT

@Soulter
Copy link
Owner

Soulter commented Feb 13, 2025

目前如果仍然解决不了,有两种可行方法解决:

  1. 在登陆设备的时候,关闭 同步最近消息
  2. 在 AstrBot 设置白名单。

@TheAutomatic
Copy link
Author

目前如果仍然解决不了,有两种可行方法解决:

  1. 在登陆设备的时候,关闭 同步最近消息
  2. 在 AstrBot 设置白名单。

设置白名单请问是指聊天群的白名单吗?

@Soulter
Copy link
Owner

Soulter commented Feb 13, 2025

目前如果仍然解决不了,有两种可行方法解决:

  1. 在登陆设备的时候,关闭 同步最近消息
  2. 在 AstrBot 设置白名单。

设置白名单请问是指聊天群的白名单吗?

是的。最好的办法是关闭 同步最近消息,最近的消息对机器人没用。

@Soulter Soulter changed the title [Bug]重启gewe的时候机器人会疯狂发消息 [Bug]重启gewe的时候机器人会疯狂发消息(登录时不选择 同步最近消息 可以解决) Feb 14, 2025
@Soulter Soulter closed this as completed Feb 14, 2025
@TheAutomatic
Copy link
Author

目前如果仍然解决不了,有两种可行方法解决:

  1. 在登陆设备的时候,关闭 同步最近消息
  2. 在 AstrBot 设置白名单。

设置白名单请问是指聊天群的白名单吗?

是的。最好的办法是关闭 同步最近消息,最近的消息对机器人没用。

追问一句,怎么退出微信号重新扫码登陆呢,是不是目前只能对着gewechat的api发post

@TheAutomatic
Copy link
Author

目前如果仍然解决不了,有两种可行方法解决:

  1. 在登陆设备的时候,关闭 同步最近消息
  2. 在 AstrBot 设置白名单。

设置白名单请问是指聊天群的白名单吗?

是的。最好的办法是关闭 同步最近消息,最近的消息对机器人没用。

追问一句,怎么退出微信号重新扫码登陆呢,是不是目前只能对着gewechat的api发post

问蠢问题了……明明可以手机微信上退出登录

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants