From cb7bf00e170148cfb09ef64ef19b600bc80ba9d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E6=B1=A0?= Date: Tue, 27 Feb 2024 22:25:38 +0800 Subject: [PATCH] `Shamrock`: Automatically remove group `forward messages` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 白池 --- .../servlet/msg/converter/NtMsgElementConverter.kt | 8 ++++++++ .../qqinterface/servlet/transfile/NtV2RichMediaSvc.kt | 7 ++++++- .../qqinterface/servlet/transfile/RichProtoSvc.kt | 7 ++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/converter/NtMsgElementConverter.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/converter/NtMsgElementConverter.kt index 4562c15..365c1f3 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/converter/NtMsgElementConverter.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/converter/NtMsgElementConverter.kt @@ -18,6 +18,8 @@ import moe.fuqiuluo.shamrock.helper.db.MessageDB import moe.fuqiuluo.shamrock.tools.asJsonObject import moe.fuqiuluo.shamrock.tools.asString import moe.fuqiuluo.shamrock.tools.hex2ByteArray +import moe.fuqiuluo.shamrock.utils.PlatformUtils +import moe.fuqiuluo.shamrock.utils.PlatformUtils.QQ_9_0_8_VER internal typealias IMsgElementConverter = suspend (Int, String, String, MsgElement) -> MessageSegment @@ -167,6 +169,11 @@ internal object NtMsgElementConverter { val originalUrl = image.originImageUrl ?: "" LogCenter.log({ "receive image: $image" }, Level.DEBUG) + var storeId = 0 + if (PlatformUtils.getQQVersionCode() > QQ_9_0_8_VER) { + storeId = image.storeID + } + return MessageSegment( type = "image", data = hashMapOf( @@ -192,6 +199,7 @@ internal object NtMsgElementConverter { sha = "", fileSize = image.fileSize.toULong(), peer = peerId, + storeId = storeId ) MsgConstant.KCHATTYPEGUILD -> RichProtoSvc.getGuildPicDownUrl( diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt index 704e5ac..0a2c8ea 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/NtV2RichMediaSvc.kt @@ -296,7 +296,12 @@ internal object NtV2RichMediaSvc: BaseSvc() { contact = contact, message = ArrayList(messages), uniseq = uniseq.qqMsgId - ) { _, _ -> } + ) { _, _ -> + val kernelService = NTServiceFetcher.kernelService + val sessionService = kernelService.wrapperSession + val msgService = sessionService.msgService + msgService.deleteMsg(contact, arrayListOf(uniseq.qqMsgId), null) + } it.invokeOnCancellation { RichMediaUploadHandler.removeListener(uniseq.qqMsgId) } diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt index a3adc62..567a699 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/transfile/RichProtoSvc.kt @@ -208,9 +208,10 @@ internal object RichProtoSvc: BaseSvc() { sha: String = "", fileSize: ULong = 0uL, width: UInt = 0u, - height: UInt = 0u + height: UInt = 0u, + storeId: Int = 0 ): String { - val isNtServer = originalUrl.startsWith("/download") + val isNtServer = storeId == 1 || originalUrl.startsWith("/download") val domain = if (isNtServer) MULTIMEDIA_DOMAIN else C2C_PIC if (originalUrl.isNotEmpty()) { if (fileId.isNotEmpty()) getNtPicRKey( @@ -238,7 +239,7 @@ internal object RichProtoSvc: BaseSvc() { } return "https://$domain$originalUrl" } - return "https://$domain/offpic_new/0/123-0-${md5}/0?term=2" + return "https://$domain/offpic_new/0/0-0-${md5}/0?term=2" } suspend fun getGuildPicDownUrl(