From d33cace7aaac368821981e149aab55e9c1e54e90 Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Thu, 21 Mar 2024 17:39:51 +0800 Subject: [PATCH] `Shamrock`: forward messages resources upload --- .../java/qq/service/bdh/NtV2RichMediaSvc.kt | 20 ++++++++++++++----- .../java/qq/service/msg/ReqMultiConvertor.kt | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/xposed/src/main/java/qq/service/bdh/NtV2RichMediaSvc.kt b/xposed/src/main/java/qq/service/bdh/NtV2RichMediaSvc.kt index e25ffd7..e5d2d95 100644 --- a/xposed/src/main/java/qq/service/bdh/NtV2RichMediaSvc.kt +++ b/xposed/src/main/java/qq/service/bdh/NtV2RichMediaSvc.kt @@ -370,13 +370,14 @@ internal object NtV2RichMediaSvc: QQInterfaces() { width: UInt, height: UInt, retryCnt: Int, + chatType: Int, sceneBuilder: suspend SceneInfo.() -> Unit ): Result { return runCatching { - requestUploadNtPic(file, md5, sha, name, width, height, sceneBuilder).getOrThrow() + requestUploadNtPic(file, md5, sha, name, width, height, chatType, sceneBuilder).getOrThrow() }.onFailure { if (retryCnt > 0) { - return requestUploadNtPic(file, md5, sha, name, width, height, retryCnt - 1, sceneBuilder) + return requestUploadNtPic(file, md5, sha, name, width, height, retryCnt - 1, chatType, sceneBuilder) } } } @@ -388,6 +389,7 @@ internal object NtV2RichMediaSvc: QQInterfaces() { name: String, width: UInt, height: UInt, + chatType: Int, sceneBuilder: suspend SceneInfo.() -> Unit ): Result { val req = NtV2RichMediaReq( @@ -427,12 +429,20 @@ internal object NtV2RichMediaSvc: QQInterfaces() { tryFastUploadCompleted = true, srvSendMsg = false, clientRandomId = Random.nextULong(), - compatQMsgSceneType = 1u, + compatQMsgSceneType = 2u, clientSeq = Random.nextUInt(), - noNeedCompatMsg = false + noNeedCompatMsg = true ) ).toByteArray() - val fromServiceMsg = sendOidbAW("OidbSvcTrpcTcp.0x11c5_100", 4549, 100, req, true, timeout = 3.seconds) + val fromServiceMsg = when (chatType) { + MsgConstant.KCHATTYPEGROUP -> { + sendOidbAW("OidbSvcTrpcTcp.0x11c4_100", 4548, 100, req, true, timeout = 3.seconds) + } + MsgConstant.KCHATTYPEC2C -> { + sendOidbAW("OidbSvcTrpcTcp.0x11c5_100", 4549, 100, req, true, timeout = 3.seconds) + } + else -> return Result.failure(Exception("unknown chat type: $chatType")) + } if (fromServiceMsg == null || fromServiceMsg.wupBuffer == null) { return Result.failure(Exception("unable to request upload nt pic")) } diff --git a/xposed/src/main/java/qq/service/msg/ReqMultiConvertor.kt b/xposed/src/main/java/qq/service/msg/ReqMultiConvertor.kt index 0f2d833..06d8fa7 100644 --- a/xposed/src/main/java/qq/service/msg/ReqMultiConvertor.kt +++ b/xposed/src/main/java/qq/service/msg/ReqMultiConvertor.kt @@ -256,7 +256,7 @@ suspend fun List.toRichText(contact: Contact): Result { sceneType = 2u