From f00bb216b6f00960862726f733f54f02ac46b030 Mon Sep 17 00:00:00 2001 From: Him188 Date: Tue, 5 Jan 2021 22:30:49 +0800 Subject: [PATCH] Support sending friend image to group, #307 --- .../commonMain/kotlin/contact/GroupImpl.kt | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt index ad8db5e93..dba3c9b41 100644 --- a/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt +++ b/mirai-core/src/commonMain/kotlin/contact/GroupImpl.kt @@ -20,9 +20,7 @@ import net.mamoe.mirai.event.broadcast import net.mamoe.mirai.event.events.* import net.mamoe.mirai.internal.MiraiImpl import net.mamoe.mirai.internal.QQAndroidBot -import net.mamoe.mirai.internal.message.MessageSourceToGroupImpl -import net.mamoe.mirai.internal.message.OfflineGroupImage -import net.mamoe.mirai.internal.message.ensureSequenceIdAvailable +import net.mamoe.mirai.internal.message.* import net.mamoe.mirai.internal.message.firstIsInstanceOrNull import net.mamoe.mirai.internal.network.QQAndroidBotNetworkHandler import net.mamoe.mirai.internal.network.highway.HighwayHelper @@ -153,8 +151,11 @@ internal class GroupImpl( throw EventCancelledException("exception thrown when broadcasting GroupMessagePreSendEvent", it) }.message.asMessageChain() - var length: Int = 0 - var imageCnt: Int = 0 + @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") + var length = 0 + + @Suppress("VARIABLE_WITH_REDUNDANT_INITIALIZER") // stupid compiler + var imageCnt = 0 chain.verityLength(message, this, lengthCallback = { length = it }, imageCntCallback = { @@ -181,6 +182,17 @@ internal class GroupImpl( msg.firstIsInstanceOrNull()?.source?.ensureSequenceIdAvailable() + msg.filterIsInstance().forEach { image -> + bot.network.run { + ImgStore.GroupPicUp( + bot.client, + uin = bot.id, + groupCode = id, + md5 = image.md5, + size = if (image is OnlineFriendImageImpl) image.delegate.fileLen else 0 + ).sendAndExpect() + } + } val result = bot.network.runCatching { val source: MessageSourceToGroupImpl