From 1d035fa37861c545d317e206c4d45138433a0680 Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Thu, 14 Mar 2024 18:57:45 +0800 Subject: [PATCH] =?UTF-8?q?`Shamrock`:=20fix=20=E7=BE=A4=E8=81=8A=E5=92=8C?= =?UTF-8?q?=E7=A7=81=E8=81=8A=E8=BD=AC=E5=8F=91=E5=88=86=E5=88=AB=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servlet/msg/maker/ElemMaker.kt | 2 +- .../servlet/transfile/NtV2RichMediaSvc.kt | 20 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/maker/ElemMaker.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/maker/ElemMaker.kt index c1c4243d..58f15e51 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/maker/ElemMaker.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/msg/maker/ElemMaker.kt @@ -268,7 +268,7 @@ internal class ElemMaker { runCatching { fileInfo.uuid.toUInt() }.onFailure { - NtV2RichMediaSvc.requestUploadNtPic(file, fileInfo.md5, fileInfo.sha, fileInfo.fileName, picWidth.toUInt(), picHeight.toUInt(), 5) { + NtV2RichMediaSvc.requestUploadNtPic(file, fileInfo.md5, fileInfo.sha, fileInfo.fileName, picWidth.toUInt(), picHeight.toUInt(), 5, chatType) { when(chatType) { MsgConstant.KCHATTYPEGROUP -> { sceneType = 2u 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 a591ed37..8774f7fd 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 @@ -404,13 +404,14 @@ internal object NtV2RichMediaSvc: BaseSvc() { width: UInt, height: UInt, retryCnt: Int, + chatType: Int = MsgConstant.KCHATTYPEGROUP, 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) } } } @@ -422,6 +423,7 @@ internal object NtV2RichMediaSvc: BaseSvc() { name: String, width: UInt, height: UInt, + chatType: Int, sceneBuilder: suspend SceneInfo.() -> Unit ): Result { val req = NtV2RichMediaReq( @@ -466,8 +468,18 @@ internal object NtV2RichMediaSvc: BaseSvc() { noNeedCompatMsg = true ) ).toByteArray() - val buffer = sendOidbAW("OidbSvcTrpcTcp.0x11c4_100", 4548, 100, req, true, timeout = 3_000)?.slice(4) - ?: return Result.failure(Exception("no response: timeout")) + val buffer = when (chatType) { + MsgConstant.KCHATTYPEGROUP -> { + sendOidbAW("OidbSvcTrpcTcp.0x11c4_100", 4548, 100, req, true, timeout = 3_000)?.slice(4) + ?: return Result.failure(Exception("no response: timeout")) + } + MsgConstant.KCHATTYPEC2C -> { + sendOidbAW("OidbSvcTrpcTcp.0x11c5_100", 4549, 100, req, true, timeout = 3_000)?.slice(4) + ?: return Result.failure(Exception("no response: timeout")) + } + + else -> return Result.failure(Exception("unknown chat type: $chatType")) + } val rspBuffer = buffer.decodeProtobuf().buffer val rsp = rspBuffer.decodeProtobuf() if (rsp.upload == null) {