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

在某些情况下无法同步好友消息 #249

Closed
Shute052 opened this issue Apr 21, 2020 · 25 comments
Closed

在某些情况下无法同步好友消息 #249

Shute052 opened this issue Apr 21, 2020 · 25 comments
Assignees
Labels
C 优先级: 最高 t:bug 类型: bug x:protocol 属性: 协议相关
Milestone

Comments

@Shute052
Copy link

Shute052 commented Apr 21, 2020

问题

TIM截图20200421121924
如图,12:17:05发送的消息,此后12:17:06发送的自动回复,都能用subscribeFriendMessages正常处理。但之后这个qq发给bot的消息都接收不到。

如何复现

  1. 手机端qq忙碌模式
  2. 设置自动回复
  3. 发送消息
@Shute052 Shute052 added the t:bug 类型: bug label Apr 21, 2020
@Him188 Him188 added N 优先级: 一般 x:protocol 属性: 协议相关 and removed t:bug 类型: bug labels Apr 21, 2020
@Him188

This comment has been minimized.

@Him188

This comment has been minimized.

@Him188 Him188 changed the title 手机端的自动回复导致机器人无法继续接收消息 在某些情况下无法同步好友消息 Apr 24, 2020
@Him188

This comment has been minimized.

@wuxianucw
Copy link
Contributor

挂机较长时间也可能出现此问题,我的 log 如下:

Network(**********) 22:14:43 : Packet: net.mamoe.mirai.qqandroid.network.protocol.data.jce.RequestPushNotify@665707
Network(**********) 22:14:43 : Send: MessageSvc.PbGetMsg
Network(**********) 22:14:43 : Send: MessageSvc.PbDeleteMsg

@Him188 Him188 pinned this issue May 22, 2020
@Him188 Him188 unpinned this issue May 22, 2020
@cyanray
Copy link

cyanray commented Jun 2, 2020

手机登录bot账号,把所有“QQ订阅号”(如腾讯新闻等)的消息都设置为“不再接收”似乎可以改善。

@wuxianucw
Copy link
Contributor

手机登录bot账号,把所有“QQ订阅号”(如腾讯新闻等)的消息都设置为“不再接收”似乎可以改善。

并没有确切证据表明两者之间存在关联,我的 bot 号原本就已经取消接收所有订阅号消息,但长时间挂机仍然能够较频繁复现,且存在对特定好友无法同步消息的情况。

@ghost
Copy link

ghost commented Jun 8, 2020

目前通过删除bot好友解决了没有回复的问题👍

@ryoii
Copy link
Member

ryoii commented Jul 23, 2020

临时解决方法:用其他与当前Bot登录协议不冲突的客户端登录一次Bot,即可在不重启的情况下恢复消息同步

@ryoii
Copy link
Member

ryoii commented Jul 23, 2020

临时解决方法:用其他与当前Bot登录协议不冲突的客户端登录一次Bot,即可在不重启的情况下恢复消息同步

如果仍无法同步,在客户端中随意发送一条好友消息即可

好,它不是百分百可以的

@mzdluo123 mzdluo123 modified the milestones: 2.0.0, 1.2.0 Jul 28, 2020
mzdluo123 added a commit that referenced this issue Jul 28, 2020
mzdluo123 added a commit that referenced this issue Jul 29, 2020
This reverts commit b320d2c
@Him188
Copy link
Member

Him188 commented Sep 9, 2020

此问题影响好友消息接收, 也同时严重影响群列表, 群员列表

@Him188
Copy link
Member

Him188 commented Sep 9, 2020

似乎在最近的修改 (1.2~1.2.2之间某次更改) 后才出现群列表和好友列表失去同步的问题。
但在最近修改后消息接收得到改善

@Him188
Copy link
Member

Him188 commented Sep 10, 2020

相关衍生问题

以下问题最大的可能原因都是 sync 时丢失相关事件包.

以下问题可能是缓存未成功过滤重复事件 (issue 提交时大约为 1.1.0 版本).

@Hieuzest
Copy link
Contributor

Hieuzest commented Sep 13, 2020

似乎在最近的修改 (1.2~1.2.2之间某次更改) 后才出现群列表和好友列表失去同步的问题。
但在最近修改后消息接收得到改善

@Him188
8e3fb15 中引入的 msgUidSet 对 msgUid 进行了去重,这直接导致了群/群成员列表的同步问题,因为相关事件的Uid极易重复
测试: bot作为普通旁观成员,在有不同用户主动加入不同群组时,uid均一致; bot作为管理员时,不同用户申请入群的事件uid也一致

related: #580 #581 #590 #542

@Him188
Copy link
Member

Him188 commented Sep 13, 2020

似乎在最近的修改 (1.2~1.2.2之间某次更改) 后才出现群列表和好友列表失去同步的问题。
但在最近修改后消息接收得到改善

@Him188
8e3fb15 中引入的 msgUidSet 对 msgUid 进行了去重,这直接导致了群/群成员列表的同步问题,因为相关事件的Uid极易重复
测试: bot作为普通旁观成员,在有不同用户主动加入不同群组时,uid均一致; bot作为管理员时,不同用户申请入群的事件uid也一致

related: #580 #581 #590 #542

但好友消息需要这样的去重. 因为这个 commit 解决了好友消息重复和收不到的问题 @mzdluo123

@Hieuzest
Copy link
Contributor

考虑对MsgHead实现某种hash(combine seq, time, uid)?

@Him188
Copy link
Member

Him188 commented Sep 13, 2020

考虑对MsgHead实现某种hash(combine seq, time, uid)?

我认为不错

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C 优先级: 最高 t:bug 类型: bug x:protocol 属性: 协议相关
Projects
None yet
Development

No branches or pull requests

9 participants