Commit 82faf773 authored by mzdluo123's avatar mzdluo123

try fix tim pc

parent 9494472c
...@@ -33,6 +33,8 @@ private val UNSUPPORTED_MERGED_MESSAGE_PLAIN = PlainText("你的QQ暂不支持 ...@@ -33,6 +33,8 @@ private val UNSUPPORTED_MERGED_MESSAGE_PLAIN = PlainText("你的QQ暂不支持
private val UNSUPPORTED_POKE_MESSAGE_PLAIN = PlainText("[戳一戳]请使用最新版手机QQ体验新功能。") private val UNSUPPORTED_POKE_MESSAGE_PLAIN = PlainText("[戳一戳]请使用最新版手机QQ体验新功能。")
private val UNSUPPORTED_FLASH_MESSAGE_PLAIN = PlainText("[闪照]请使用新版手机QQ查看闪照。") private val UNSUPPORTED_FLASH_MESSAGE_PLAIN = PlainText("[闪照]请使用新版手机QQ查看闪照。")
@OptIn(ExperimentalStdlibApi::class)
@Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
internal fun MessageChain.toRichTextElems(forGroup: Boolean, withGeneralFlags: Boolean): MutableList<ImMsgBody.Elem> { internal fun MessageChain.toRichTextElems(forGroup: Boolean, withGeneralFlags: Boolean): MutableList<ImMsgBody.Elem> {
val elements = ArrayList<ImMsgBody.Elem>(this.size) val elements = ArrayList<ImMsgBody.Elem>(this.size)
...@@ -156,7 +158,13 @@ internal fun MessageChain.toRichTextElems(forGroup: Boolean, withGeneralFlags: B ...@@ -156,7 +158,13 @@ internal fun MessageChain.toRichTextElems(forGroup: Boolean, withGeneralFlags: B
is VipFace -> { is VipFace -> {
transformOneMessage(PlainText(it.contentToString())) transformOneMessage(PlainText(it.contentToString()))
} }
is PttMessage, is PttMessage -> {
elements.add(
ImMsgBody.Elem(
extraInfo = ImMsgBody.ExtraInfo(flags = 16,groupMask = 1)
)
)
}
is ForwardMessage, is ForwardMessage,
is MessageSource, // mirai metadata only is MessageSource, // mirai metadata only
is RichMessage // already transformed above is RichMessage // already transformed above
...@@ -218,8 +226,8 @@ internal fun MsgComm.Msg.toMessageChain( ...@@ -218,8 +226,8 @@ internal fun MsgComm.Msg.toMessageChain(
val ptt = this.msgBody.richText.ptt val ptt = this.msgBody.richText.ptt
val pptMsg = ptt?.run { val pptMsg = ptt?.run {
when(fileType) { when (fileType) {
4 -> Voice(String(fileName), fileMd5, fileSize.toLong(),fileKey,String(downPara)) 4 -> Voice(String(fileName), fileMd5, fileSize.toLong(), time, String(downPara))
else -> null else -> null
} }
} }
...@@ -431,7 +439,8 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(groupIdOrZero: Long, bot: B ...@@ -431,7 +439,8 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(groupIdOrZero: Long, bot: B
.orEmpty(), .orEmpty(),
proto.pokeType, proto.pokeType,
proto.vaspokeId proto.vaspokeId
)) )
)
} }
3 -> { 3 -> {
val proto = element.commonElem.pbElem.loadAs(HummerCommelem.MsgElemInfoServtype3.serializer()) val proto = element.commonElem.pbElem.loadAs(HummerCommelem.MsgElemInfoServtype3.serializer())
......
...@@ -273,7 +273,7 @@ internal class TryUpPttReq( ...@@ -273,7 +273,7 @@ internal class TryUpPttReq(
internal class TryUpPttRsp( internal class TryUpPttRsp(
@ProtoId(1) @JvmField val fileId: Long = 0L, @ProtoId(1) @JvmField val fileId: Long = 0L,
@ProtoId(2) @JvmField val result: Int = 0, @ProtoId(2) @JvmField val result: Int = 0,
@ProtoId(3) @JvmField val failMsg: ByteArray = EMPTY_BYTE_ARRAY, @ProtoId(3) @JvmField val failMsg: ByteArray? = null,
@ProtoId(4) @JvmField val boolFileExit: Boolean = false, @ProtoId(4) @JvmField val boolFileExit: Boolean = false,
@ProtoId(5) @JvmField val uint32UpIp: List<Int>? = null, @ProtoId(5) @JvmField val uint32UpIp: List<Int>? = null,
@ProtoId(6) @JvmField val uint32UpPort: List<Int>? = null, @ProtoId(6) @JvmField val uint32UpPort: List<Int>? = null,
......
...@@ -144,12 +144,8 @@ internal object MessageSvcPbSendMsg : OutgoingPacketFactory<MessageSvcPbSendMsg. ...@@ -144,12 +144,8 @@ internal object MessageSvcPbSendMsg : OutgoingPacketFactory<MessageSvcPbSendMsg.
fileMd5 = md5, fileMd5 = md5,
boolValid = true, boolValid = true,
fileSize = fileSize.toInt(), fileSize = fileSize.toInt(),
groupFileKey = fileKey,
fileType = 4, fileType = 4,
// 不知道能不能解决tim无法收听的问题 time = voiceLength
reserve = "16 36 20 38 36 65 41 31 04 37 61 39 35 37 37 61 33 62 37 30 33 66 65 33 31 20 20 20 20 20 20 35 30 55 49 30 E3 3F 8F 9F FB CA 1D 79 60 6C F4 74 F2 35 35 34 39 33 30 45 33 33 46 38 46 39 46 46 42 43 41 31 44 37 39 36 30 36 43 46 34 37 34 46 32 2E 61 6D 72 41".hexToBytes(),
pbReserve = "08 00".hexToBytes(),
time = 2
) )
} }
) )
......
...@@ -11,6 +11,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket ...@@ -11,6 +11,7 @@ import net.mamoe.mirai.qqandroid.network.protocol.packet.buildOutgoingUniPacket
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.ImgStore import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.ImgStore
import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.getRandomString import net.mamoe.mirai.qqandroid.network.protocol.packet.chat.image.getRandomString
import net.mamoe.mirai.qqandroid.utils._miraiContentToString import net.mamoe.mirai.qqandroid.utils._miraiContentToString
import net.mamoe.mirai.qqandroid.utils.encodeToString
import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf import net.mamoe.mirai.qqandroid.utils.io.serialization.readProtoBuf
import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf import net.mamoe.mirai.qqandroid.utils.io.serialization.writeProtoBuf
import net.mamoe.mirai.qqandroid.utils.toUHexString import net.mamoe.mirai.qqandroid.utils.toUHexString
...@@ -77,6 +78,9 @@ internal class PttStore { ...@@ -77,6 +78,9 @@ internal class PttStore {
val resp0 = readProtoBuf(Cmd0x388.RspBody.serializer()) val resp0 = readProtoBuf(Cmd0x388.RspBody.serializer())
resp0.msgTryupPttRsp ?: error("cannot find `msgTryupPttRsp` from `Cmd0x388.RspBody`") resp0.msgTryupPttRsp ?: error("cannot find `msgTryupPttRsp` from `Cmd0x388.RspBody`")
val resp = resp0.msgTryupPttRsp.first() val resp = resp0.msgTryupPttRsp.first()
if (resp.failMsg != null) {
throw IllegalStateException(resp.failMsg.encodeToString())
}
return Response.RequireUpload( return Response.RequireUpload(
fileId = resp.fileid, fileId = resp.fileid,
uKey = resp.upUkey, uKey = resp.upUkey,
......
...@@ -16,7 +16,7 @@ abstract class PttMessage : MessageContent { ...@@ -16,7 +16,7 @@ abstract class PttMessage : MessageContent {
abstract val fileName: String abstract val fileName: String
abstract val md5: ByteArray abstract val md5: ByteArray
abstract val fileSize: Long abstract val fileSize: Long
abstract val fileKey:ByteArray abstract val voiceLength:Int
} }
...@@ -29,7 +29,7 @@ class Voice( ...@@ -29,7 +29,7 @@ class Voice(
override val fileName: String, override val fileName: String,
override val md5: ByteArray, override val md5: ByteArray,
override val fileSize: Long, override val fileSize: Long,
override val fileKey: ByteArray, override val voiceLength: Int,
private val _url: String private val _url: String
) : PttMessage() { ) : PttMessage() {
...@@ -44,7 +44,7 @@ class Voice( ...@@ -44,7 +44,7 @@ class Voice(
private var _stringValue: String? = null private var _stringValue: String? = null
get() = field ?: kotlin.run { get() = field ?: kotlin.run {
field = "[mirai:voice:$fileName]" field = "[mirai:voice:$fileName,url:$url]"
field field
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment