mirror of
https://github.com/mamoe/mirai.git
synced 2025-04-24 20:43:33 +08:00
Merge pull request #921 from sandtechnology/showImage
Support detect show image, also update pb
This commit is contained in:
commit
1df5479c0b
binary-compatibility-validator/api
mirai-core-api/src/commonMain/kotlin/message/data
mirai-core/src/commonMain/kotlin
@ -5069,6 +5069,11 @@ public abstract interface class net/mamoe/mirai/message/data/ServiceMessage : ne
|
||||
public final class net/mamoe/mirai/message/data/ServiceMessage$Key : net/mamoe/mirai/message/data/AbstractPolymorphicMessageKey {
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/ShowImageFlag : net/mamoe/mirai/message/data/MessageMetadata {
|
||||
public static final field INSTANCE Lnet/mamoe/mirai/message/data/ShowImageFlag;
|
||||
public fun toString ()Ljava/lang/String;
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SimpleServiceMessage : net/mamoe/mirai/message/data/ServiceMessage {
|
||||
public static final field Companion Lnet/mamoe/mirai/message/data/SimpleServiceMessage$Companion;
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
|
19
mirai-core-api/src/commonMain/kotlin/message/data/flags.kt
Normal file
19
mirai-core-api/src/commonMain/kotlin/message/data/flags.kt
Normal file
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||
*
|
||||
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||
*
|
||||
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.message.data
|
||||
|
||||
/**
|
||||
* [MessageChain] 中包含秀图时的标记
|
||||
*
|
||||
* 秀图已被 QQ 弃用, 仅作识别处理
|
||||
*/
|
||||
public object ShowImageFlag : MessageMetadata {
|
||||
override fun toString(): String = "ShowImageFlag"
|
||||
}
|
@ -244,7 +244,7 @@ internal fun MessageChain.toRichTextElems(
|
||||
-> {
|
||||
|
||||
}
|
||||
is InternalFlagOnlyMessage -> {
|
||||
is InternalFlagOnlyMessage, is ShowImageFlag -> {
|
||||
// ignore
|
||||
}
|
||||
else -> error("unsupported message type: ${currentMessage::class.simpleName}")
|
||||
@ -483,7 +483,14 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(
|
||||
)
|
||||
}
|
||||
element.notOnlineImage != null -> list.add(OnlineFriendImageImpl(element.notOnlineImage))
|
||||
element.customFace != null -> list.add(OnlineGroupImageImpl(element.customFace))
|
||||
element.customFace != null -> {
|
||||
list.add(OnlineGroupImageImpl(element.customFace))
|
||||
element.customFace.pbReserve.let {
|
||||
if (it.isNotEmpty() && it.loadAs(CustomFace.ResvAttr.serializer()).msgImageShow != null) {
|
||||
list.add(ShowImageFlag)
|
||||
}
|
||||
}
|
||||
}
|
||||
element.face != null -> list.add(Face(element.face.index))
|
||||
element.text != null -> {
|
||||
if (element.text.attr6Buf.isEmpty()) {
|
||||
|
@ -15,7 +15,6 @@ import kotlinx.serialization.protobuf.ProtoNumber
|
||||
import kotlinx.serialization.protobuf.ProtoType
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY
|
||||
import net.mamoe.mirai.internal.utils.io.ProtoBuf
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.toByteArray
|
||||
|
||||
@Serializable
|
||||
internal class ImCommon : ProtoBuf {
|
||||
@ -711,20 +710,6 @@ internal class ImMsgBody : ProtoBuf {
|
||||
@ProtoNumber(29) @JvmField val pbReserve: ByteArray = EMPTY_BYTE_ARRAY
|
||||
) : ProtoBuf, NotOnlineImageOrCustomFace
|
||||
|
||||
@Serializable // 非官方.
|
||||
internal class PbReserve(
|
||||
@ProtoNumber(1) @JvmField val unknown1: Int = 1,
|
||||
@ProtoNumber(2) @JvmField val unknown2: Int = 0,
|
||||
@ProtoNumber(6) @JvmField val unknown3: Int = 0,
|
||||
@ProtoNumber(8) @JvmField val hint: String = "[动画表情]",
|
||||
@ProtoNumber(10) @JvmField val unknown5: Int = 0,
|
||||
@ProtoNumber(15) @JvmField val unknwon6: Int = 5
|
||||
) : ProtoBuf {
|
||||
companion object {
|
||||
@JvmField
|
||||
val DEFAULT: ByteArray = PbReserve().toByteArray(serializer())
|
||||
}
|
||||
}
|
||||
|
||||
@Serializable
|
||||
internal class OnlineImage(
|
||||
|
@ -14,9 +14,62 @@ import kotlinx.serialization.protobuf.ProtoNumber
|
||||
import net.mamoe.mirai.internal.network.protocol.packet.EMPTY_BYTE_ARRAY
|
||||
import net.mamoe.mirai.internal.utils.io.ProtoBuf
|
||||
|
||||
internal class NotOnlineImage {
|
||||
@Serializable
|
||||
internal class ResvAttr(
|
||||
@JvmField @ProtoNumber(1) val imageBizType: Int = 0,
|
||||
@JvmField @ProtoNumber(2) val customfaceType: Int = 0,
|
||||
@JvmField @ProtoNumber(3) val emojiPackageid: Int = 0,
|
||||
@JvmField @ProtoNumber(4) val emojiId: Int = 0,
|
||||
@JvmField @ProtoNumber(5) val text: String = "",
|
||||
@JvmField @ProtoNumber(6) val doutuSuppliers: String = "",
|
||||
@JvmField @ProtoNumber(8) val textSummary: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@JvmField @ProtoNumber(10) val emojiFrom: Int = 0,
|
||||
@JvmField @ProtoNumber(11) val emojiSource: String = "",
|
||||
@JvmField @ProtoNumber(12) val emojiWebUrl: String = "",
|
||||
@JvmField @ProtoNumber(13) val emojiIconUrl: String = "",
|
||||
@JvmField @ProtoNumber(14) val emojiMarketFaceName: String = "",
|
||||
@JvmField @ProtoNumber(15) val source: Int = 0,
|
||||
@JvmField @ProtoNumber(16) val cameraCaptureTemplateinfo: String = "",
|
||||
@JvmField @ProtoNumber(17) val cameraCaptureMaterialname: String = "",
|
||||
@JvmField @ProtoNumber(18) val adEmoJumpUrl: String = "",
|
||||
@JvmField @ProtoNumber(19) val adEmoDescStr: String = ""
|
||||
) : ProtoBuf
|
||||
}
|
||||
|
||||
internal class CustomFace {
|
||||
@Serializable
|
||||
internal class AnimationImageShow(
|
||||
@JvmField @ProtoNumber(1) val int32EffectId: Int = 0,
|
||||
@JvmField @ProtoNumber(2) val animationParam: ByteArray = EMPTY_BYTE_ARRAY
|
||||
) : ProtoBuf
|
||||
|
||||
@Serializable
|
||||
internal class ResvAttr(
|
||||
@JvmField @ProtoNumber(1) val imageBizType: Int = 0,
|
||||
@JvmField @ProtoNumber(2) val customfaceType: Int = 0,
|
||||
@JvmField @ProtoNumber(3) val emojiPackageid: Int = 0,
|
||||
@JvmField @ProtoNumber(4) val emojiId: Int = 0,
|
||||
@JvmField @ProtoNumber(5) val text: String = "",
|
||||
@JvmField @ProtoNumber(6) val doutuSuppliers: String = "",
|
||||
@JvmField @ProtoNumber(7) val msgImageShow: AnimationImageShow? = null,
|
||||
@JvmField @ProtoNumber(9) val textSummary: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@JvmField @ProtoNumber(10) val emojiFrom: Int = 0,
|
||||
@JvmField @ProtoNumber(11) val emojiSource: String = "",
|
||||
@JvmField @ProtoNumber(12) val emojiWebUrl: String = "",
|
||||
@JvmField @ProtoNumber(13) val emojiIconUrl: String = "",
|
||||
@JvmField @ProtoNumber(14) val emojiMarketFaceName: String = "",
|
||||
@JvmField @ProtoNumber(15) val source: Int = 0,
|
||||
@JvmField @ProtoNumber(16) val cameraCaptureTemplateinfo: String = "",
|
||||
@JvmField @ProtoNumber(17) val cameraCaptureMaterialname: String = "",
|
||||
@JvmField @ProtoNumber(18) val adEmoJumpUrl: String = "",
|
||||
@JvmField @ProtoNumber(19) val adEmoDescStr: String = ""
|
||||
) : ProtoBuf
|
||||
}
|
||||
|
||||
internal class Generalflags : ProtoBuf {
|
||||
@Serializable
|
||||
internal class ResvAttr(
|
||||
internal class ResvAttr(
|
||||
@ProtoNumber(1) @JvmField val globalGroupLevel: Int = 0,
|
||||
@ProtoNumber(2) @JvmField val nearbyCharmLevel: Int = 0,
|
||||
@ProtoNumber(3) @JvmField val redbagMsgSenderUin: Long = 0L,
|
||||
|
Loading…
Reference in New Issue
Block a user