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

在一条消息中发送同一个 ID 构造的多个 OfflineGroupImage 实例还会调用多次 GroupPicUp #1636

Closed
mcdoeswhat opened this issue Oct 31, 2021 · 2 comments · Fixed by #1667
Labels
N 优先级: 一般 t:enhancement 类型: 现有功能上的优化 x:protocol 属性: 协议相关
Milestone

Comments

@mcdoeswhat
Copy link
Contributor

mcdoeswhat commented Oct 31, 2021

连发5张图片测试
由ID构造的图片在群里面发送时会调用GroupPicUp
(而闪照类型和私聊发送则不会调用,经过测试重复发送同一个ID构造的图片还会调用多次GroupPicUp):

[11:40:16] [DefaultDispatcher-worker-7/INFO]: �[0m2021-10-31 11:40:16 V/Net 0000000000: Send: ImgStore.GroupPicUp(ImgStore.GroupPicUp)�[0m
[11:40:17] [nioEventLoopGroup-2-19/INFO]: �[0m2021-10-31 11:40:17 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:40:17] [nioEventLoopGroup-2-19/INFO]: �[0m2021-10-31 11:40:17 V/Net 0000000000: Recv: ImgStore.GroupPicUp�[0m
[11:40:17] [nioEventLoopGroup-2-20/INFO]: �[0m2021-10-31 11:40:17 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:40:17] [DefaultDispatcher-worker-14/INFO]: �[0m2021-10-31 11:40:17 V/Bot 0000000000: Group(0000000000) <- [mirai:image:{F7D0CFD2-CA95-F4A7-6CA6-74534A925C59}.png]�[0m
[11:40:17] [DefaultDispatcher-worker-21/INFO]: �[0m2021-10-31 11:40:17 V/Net 0000000000: Send: ImgStore.GroupPicUp(ImgStore.GroupPicUp)�[0m
[11:40:18] [nioEventLoopGroup-2-22/INFO]: �[0m2021-10-31 11:40:18 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:40:18] [nioEventLoopGroup-2-22/INFO]: �[0m2021-10-31 11:40:18 V/Net 0000000000: Recv: ImgStore.GroupPicUp�[0m
[11:40:18] [nioEventLoopGroup-2-23/INFO]: �[0m2021-10-31 11:40:18 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:40:18] [DefaultDispatcher-worker-21/INFO]: �[0m2021-10-31 11:40:18 V/Bot 0000000000: Group(0000000000) <- [mirai:image:{1FFDFD98-CC0E-BC31-5F55-89D31C411D09}.png]�[0m
[11:40:18] [DefaultDispatcher-worker-14/INFO]: �[0m2021-10-31 11:40:18 V/Net 0000000000: Send: ImgStore.GroupPicUp(ImgStore.GroupPicUp)�[0m
[11:40:18] [nioEventLoopGroup-2-25/INFO]: �[0m2021-10-31 11:40:18 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:40:18] [nioEventLoopGroup-2-25/INFO]: �[0m2021-10-31 11:40:18 V/Net 0000000000: Recv: ImgStore.GroupPicUp�[0m
[11:40:19] [nioEventLoopGroup-2-26/INFO]: �[0m2021-10-31 11:40:19 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:40:19] [DefaultDispatcher-worker-14/INFO]: �[0m2021-10-31 11:40:19 V/Bot 0000000000: Group(0000000000) <- [mirai:image:{00CE5C3F-CA35-94DB-9998-329F59332D60}.png]�[0m
[11:40:19] [DefaultDispatcher-worker-21/INFO]: �[0m2021-10-31 11:40:19 V/Net 0000000000: Send: ImgStore.GroupPicUp(ImgStore.GroupPicUp)�[0m
[11:40:19] [nioEventLoopGroup-2-28/INFO]: �[0m2021-10-31 11:40:19 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:40:19] [nioEventLoopGroup-2-28/INFO]: �[0m2021-10-31 11:40:19 V/Net 0000000000: Recv: ImgStore.GroupPicUp�[0m
[11:40:20] [nioEventLoopGroup-2-29/INFO]: �[0m2021-10-31 11:40:20 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:40:20] [DefaultDispatcher-worker-21/INFO]: �[0m2021-10-31 11:40:20 V/Bot 0000000000: Group(0000000000) <- [mirai:image:{AAC47524-EA56-51EB-778A-80FA719A5B2C}.png]�[0m
[11:40:20] [DefaultDispatcher-worker-14/INFO]: �[0m2021-10-31 11:40:20 V/Net 0000000000: Send: ImgStore.GroupPicUp(ImgStore.GroupPicUp)�[0m
[11:40:20] [nioEventLoopGroup-2-31/INFO]: �[0m2021-10-31 11:40:20 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:40:20] [nioEventLoopGroup-2-31/INFO]: �[0m2021-10-31 11:40:20 V/Net 0000000000: Recv: ImgStore.GroupPicUp�[0m
[11:40:21] [nioEventLoopGroup-2-32/INFO]: �[0m2021-10-31 11:40:21 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:40:21] [DefaultDispatcher-worker-14/INFO]: �[0m2021-10-31 11:40:21 V/Bot 0000000000: Group(0000000000) <- [mirai:image:{A519F95C-FEFE-7E4C-18FA-B0946D30D459}.png]�[0m

私聊时不会:

[11:42:49] [DefaultDispatcher-worker-2/INFO]: �[0m2021-10-31 11:42:49 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:42:50] [nioEventLoopGroup-2-8/INFO]: �[0m2021-10-31 11:42:50 V/Bot 0000000000: Friend(0000000000) <- [mirai:image:{CA8906CF-D1F5-EAE7-F7BE-9659DF6637A8}.png]�[0m
[11:42:50] [nioEventLoopGroup-2-8/INFO]: �[0m2021-10-31 11:42:50 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:42:50] [DefaultDispatcher-worker-2/INFO]: �[0m2021-10-31 11:42:50 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:42:52] [nioEventLoopGroup-2-9/INFO]: �[0m2021-10-31 11:42:52 V/Bot 0000000000: Friend(0000000000) <- [mirai:image:{13B4D59D-90AE-794A-CD98-91056F2A0A5B}.png]�[0m
[11:42:52] [nioEventLoopGroup-2-9/INFO]: �[0m2021-10-31 11:42:52 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:42:52] [DefaultDispatcher-worker-2/INFO]: �[0m2021-10-31 11:42:52 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:42:52] [nioEventLoopGroup-2-10/INFO]: �[0m2021-10-31 11:42:52 V/Bot 0000000000: Friend(0000000000) <- [mirai:image:{7C310031-8CAA-E126-0579-91CCC32E8C0B}.png]�[0m
[11:42:52] [nioEventLoopGroup-2-10/INFO]: �[0m2021-10-31 11:42:52 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:42:52] [DefaultDispatcher-worker-2/INFO]: �[0m2021-10-31 11:42:52 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:42:53] [nioEventLoopGroup-2-11/INFO]: �[0m2021-10-31 11:42:53 V/Bot 0000000000: Friend(0000000000) <- [mirai:image:{A2EE79D4-C4C3-9FB2-5071-49CBC55BA69D}.png]�[0m
[11:42:53] [nioEventLoopGroup-2-11/INFO]: �[0m2021-10-31 11:42:53 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m
[11:42:53] [DefaultDispatcher-worker-2/INFO]: �[0m2021-10-31 11:42:53 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)�[0m
[11:42:54] [nioEventLoopGroup-2-12/INFO]: �[0m2021-10-31 11:42:54 V/Bot 0000000000: Friend(0000000000) <- [mirai:image:{2BDAF433-325D-C9A9-7D7C-D1B084F88816}.png]�[0m
[11:42:54] [nioEventLoopGroup-2-12/INFO]: �[0m2021-10-31 11:42:54 V/Net 0000000000: Recv: MessageSvc.PbSendMsg�[0m

改为闪照时群里发送也不会(FlashImage.from(Image)):

[11:56:06 INFO]: 2021-10-31 11:56:06 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Net 0000000000: Recv: MessageSvc.PbSendMsg
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Bot 0000000000: Group(0000000000) <- [mirai:flash:{7DC773D1-5E27-6116-3FD9-6D39022CE6DA}.png]
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Net 0000000000: Recv: MessageSvc.PbSendMsg
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Bot 0000000000: Group(0000000000) <- [mirai:flash:{5F52DAAB-EBB6-D7C8-9C3D-D839CC2C460E}.png]
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)
[11:56:06 INFO]: 2021-10-31 11:56:06 V/Net 0000000000: Recv: MessageSvc.PbSendMsg
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Bot 0000000000: Group(0000000000) <- [mirai:flash:{7E795E64-D720-CA4C-6175-619B6CD01E0B}.png]
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Net 0000000000: Recv: MessageSvc.PbSendMsg
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Bot 0000000000: Group(0000000000) <- [mirai:flash:{84708B69-174C-EA30-BFAE-979F859445EE}.png]
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Net 0000000000: Send: MessageSvc.PbSendMsg(MessageSvc.PbSendMsg)
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Net 0000000000: Recv: MessageSvc.PbSendMsg
[11:56:07 INFO]: 2021-10-31 11:56:07 V/Bot 0000000000: Group(0000000000) <- [mirai:flash:{DBB539CE-CA04-B480-6314-CDD3DDE1ACA5}.png]

之前我尝试过在ForwardMesage发送时调用GroupPicUp修复图片的ID: #1635
修复ForwardMessage无法发送图片的BUG
今天测试的时候把debug一下看看这方法到底干嘛的,有啥区别
测试时发现会把图片fileID的null转换为一个负值 例如-154826574这样的随机数
于是我手动吧图片的fileID改成随机一个负数发现居然都可以正常发送(比调用GroupPicUp快多了,而且可以添加到ForwardMessage中)
经过测试发现把默认的fileID改成-1就可以了
50条图片的forwardmessage直接1秒发送完成
已经在多个群测试多次发送几百张离线随机图,抽取50张,成功发送
而且发送群图片时不会再调用GroupPicUp,速度更快,图片也正常发送
当然不知道对其他代码有没有影响

https://github.com/mamoe/mirai/blob/dev/mirai-core/src/commonMain/kotlin/message/imagesImpl.kt
第340:行: internal var fileId: Int? = -1

复现

版本及相关选项选择

  • mirai-core: 2.8.0
  • bot-protocol: ANDROID_PAD

网络日志


补充信息

@mcdoeswhat mcdoeswhat added the x:question 标签: 需要更多信息 label Oct 31, 2021
@mcdoeswhat
Copy link
Contributor Author

#1640

@Him188
Copy link
Member

Him188 commented Nov 2, 2021

请在 PR 合并后再关闭这个 issue

@Him188 Him188 reopened this Nov 2, 2021
@Him188 Him188 changed the title OfflineGroupImage发送好像有点问题 复发送同一个ID构造的 OfflineGroupImage 还会调用多次 GroupPicUp Nov 7, 2021
@Him188 Him188 changed the title 复发送同一个ID构造的 OfflineGroupImage 还会调用多次 GroupPicUp 重复发送同一个ID构造的 OfflineGroupImage 还会调用多次 GroupPicUp Nov 7, 2021
@Him188 Him188 changed the title 重复发送同一个ID构造的 OfflineGroupImage 还会调用多次 GroupPicUp 在一条消息中发送同一个 ID 构造的多个 OfflineGroupImage 实例还会调用多次 GroupPicUp Nov 7, 2021
@Him188 Him188 added t:enhancement 类型: 现有功能上的优化 N 优先级: 一般 x:protocol 属性: 协议相关 and removed x:question 标签: 需要更多信息 labels Nov 7, 2021
@Him188 Him188 modified the milestones: 2.9, 2.9.0-M1 Nov 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
N 优先级: 一般 t:enhancement 类型: 现有功能上的优化 x:protocol 属性: 协议相关
Projects
None yet
2 participants