mirror of
https://github.com/mamoe/mirai.git
synced 2025-02-27 12:40:10 +08:00
Face decoding
This commit is contained in:
parent
7de048245e
commit
a81eea422b
@ -86,6 +86,16 @@ _400Height=0x000000EB(235)
|
||||
pbReserve=<Empty ByteArray>
|
||||
}
|
||||
*/
|
||||
val FACE_BUF = "00 01 00 04 52 CC F5 D0".hexToBytes()
|
||||
|
||||
internal fun Face.toJceData(): ImMsgBody.Face {
|
||||
return ImMsgBody.Face(
|
||||
index = this.id,
|
||||
old = (0x1445 - 4 + this.id).toShort().toByteArray(),
|
||||
buf = FACE_BUF
|
||||
)
|
||||
}
|
||||
|
||||
internal fun CustomFaceFromFile.toJceData(): ImMsgBody.CustomFace {
|
||||
return ImMsgBody.CustomFace(
|
||||
filePath = this.filepath,
|
||||
@ -213,6 +223,7 @@ internal fun MessageChain.toRichTextElems(): MutableList<ImMsgBody.Elem> {
|
||||
is NotOnlineImageFromServer -> elements.add(ImMsgBody.Elem(notOnlineImage = it.delegate))
|
||||
is NotOnlineImageFromFile -> elements.add(ImMsgBody.Elem(notOnlineImage = it.toJceData()))
|
||||
is AtAll -> elements.add(atAllData)
|
||||
is Face -> elements.add(ImMsgBody.Elem(face = it.toJceData()))
|
||||
is QuoteReply,
|
||||
is MessageSource -> {
|
||||
|
||||
@ -312,6 +323,7 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChain) {
|
||||
it.srcMsg != null -> message.add(QuoteReply(MessageSourceFromServer(it.srcMsg)))
|
||||
it.notOnlineImage != null -> message.add(NotOnlineImageFromServer(it.notOnlineImage))
|
||||
it.customFace != null -> message.add(CustomFaceFromServer(it.customFace))
|
||||
it.face != null -> message.add(Face(it.face.index))
|
||||
it.text != null -> {
|
||||
if (it.text.attr6Buf.isEmpty()) {
|
||||
message.add(it.text.str.toMessage())
|
||||
@ -323,7 +335,7 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChain) {
|
||||
discardExact(7)
|
||||
id = readUInt().toLong()
|
||||
}
|
||||
if (id == 0L){
|
||||
if (id == 0L) {
|
||||
message.add(AtAll)
|
||||
} else {
|
||||
message.add(At(id, it.text.str))
|
||||
|
@ -14,309 +14,161 @@ package net.mamoe.mirai.message.data
|
||||
|
||||
import kotlin.jvm.JvmMultifileClass
|
||||
import kotlin.jvm.JvmName
|
||||
import kotlin.jvm.JvmStatic
|
||||
|
||||
/**
|
||||
* QQ 自带表情
|
||||
*/
|
||||
inline class Face(val id: FaceId) : Message {
|
||||
override fun toString(): String = "[face${id.value}]"
|
||||
class Face(val id: Int) : Message {
|
||||
override fun toString(): String = "[mirai:face$id]"
|
||||
|
||||
companion object Key : Message.Key<Face>
|
||||
/**
|
||||
* @author LamGC
|
||||
*/
|
||||
@Suppress("SpellCheckingInspection", "unused")
|
||||
companion object IdList : Message.Key<Face> {
|
||||
const val unknown: Int = 0xff
|
||||
const val jingya: Int = 0
|
||||
const val piezui: Int = 1
|
||||
const val se: Int = 2
|
||||
const val fadai: Int = 3
|
||||
const val deyi: Int = 4
|
||||
const val liulei: Int = 5
|
||||
const val haixiu: Int = 6
|
||||
const val bizui: Int = 7
|
||||
const val shui: Int = 8
|
||||
const val daku: Int = 9
|
||||
const val ganga: Int = 10
|
||||
const val fanu: Int = 11
|
||||
const val tiaopi: Int = 12
|
||||
const val ciya: Int = 13
|
||||
const val weixiao: Int = 14
|
||||
const val nanguo: Int = 15
|
||||
const val ku: Int = 16
|
||||
const val zhuakuang: Int = 18
|
||||
const val tu: Int = 19
|
||||
const val touxiao: Int = 20
|
||||
const val keai: Int = 21
|
||||
const val baiyan: Int = 22
|
||||
const val aoman: Int = 23
|
||||
const val ji_e: Int = 24
|
||||
const val kun: Int = 25
|
||||
const val jingkong: Int = 26
|
||||
const val liuhan: Int = 27
|
||||
const val hanxiao: Int = 28
|
||||
const val dabing: Int = 29
|
||||
const val fendou: Int = 30
|
||||
const val zhouma: Int = 31
|
||||
const val yiwen: Int = 32
|
||||
const val yun: Int = 34
|
||||
const val zhemo: Int = 35
|
||||
const val shuai: Int = 36
|
||||
const val kulou: Int = 37
|
||||
const val qiaoda: Int = 38
|
||||
const val zaijian: Int = 39
|
||||
const val fadou: Int = 41
|
||||
const val aiqing: Int = 42
|
||||
const val tiaotiao: Int = 43
|
||||
const val zhutou: Int = 46
|
||||
const val yongbao: Int = 49
|
||||
const val dan_gao: Int = 53
|
||||
const val shandian: Int = 54
|
||||
const val zhadan: Int = 55
|
||||
const val dao: Int = 56
|
||||
const val zuqiu: Int = 57
|
||||
const val bianbian: Int = 59
|
||||
const val kafei: Int = 60
|
||||
const val fan: Int = 61
|
||||
const val meigui: Int = 63
|
||||
const val diaoxie: Int = 64
|
||||
const val aixin: Int = 66
|
||||
const val xinsui: Int = 67
|
||||
const val liwu: Int = 69
|
||||
const val taiyang: Int = 74
|
||||
const val yueliang: Int = 75
|
||||
const val qiang: Int = 76
|
||||
const val ruo: Int = 77
|
||||
const val woshou: Int = 78
|
||||
const val shengli: Int = 79
|
||||
const val feiwen: Int = 85
|
||||
const val naohuo: Int = 86
|
||||
const val xigua: Int = 89
|
||||
const val lenghan: Int = 96
|
||||
const val cahan: Int = 97
|
||||
const val koubi: Int = 98
|
||||
const val guzhang: Int = 99
|
||||
const val qiudale: Int = 100
|
||||
const val huaixiao: Int = 101
|
||||
const val zuohengheng: Int = 102
|
||||
const val youhengheng: Int = 103
|
||||
const val haqian: Int = 104
|
||||
const val bishi: Int = 105
|
||||
const val weiqu: Int = 106
|
||||
const val kuaikule: Int = 107
|
||||
const val yinxian: Int = 108
|
||||
const val qinqin: Int = 109
|
||||
const val xia: Int = 110
|
||||
const val kelian: Int = 111
|
||||
const val caidao: Int = 112
|
||||
const val pijiu: Int = 113
|
||||
const val lanqiu: Int = 114
|
||||
const val pingpang: Int = 115
|
||||
const val shiai: Int = 116
|
||||
const val piaochong: Int = 117
|
||||
const val baoquan: Int = 118
|
||||
const val gouyin: Int = 119
|
||||
const val quantou: Int = 120
|
||||
const val chajin: Int = 121
|
||||
const val aini: Int = 122
|
||||
const val bu: Int = 123
|
||||
const val hao: Int = 124
|
||||
const val zhuanquan: Int = 125
|
||||
const val ketou: Int = 126
|
||||
const val huitou: Int = 127
|
||||
const val tiaosheng: Int = 128
|
||||
const val huishou: Int = 129
|
||||
const val jidong: Int = 130
|
||||
const val jiewu: Int = 131
|
||||
const val xianwen: Int = 132
|
||||
const val zuotaiji: Int = 133
|
||||
const val youtaiji: Int = 134
|
||||
const val shuangxi: Int = 136
|
||||
const val bianpao: Int = 137
|
||||
const val denglong: Int = 138
|
||||
const val facai: Int = 139
|
||||
const val K_ge: Int = 140
|
||||
const val gouwu: Int = 141
|
||||
const val youjian: Int = 142
|
||||
const val shuai_qi: Int = 143
|
||||
const val hecai: Int = 144
|
||||
const val qidao: Int = 145
|
||||
const val baojin: Int = 146
|
||||
const val bangbangtang: Int = 147
|
||||
const val he_nai: Int = 148
|
||||
const val xiamian: Int = 149
|
||||
const val xiangjiao: Int = 150
|
||||
const val feiji: Int = 151
|
||||
const val kaiche: Int = 152
|
||||
const val gaotiezuochetou: Int = 153
|
||||
const val chexiang: Int = 154
|
||||
const val gaotieyouchetou: Int = 155
|
||||
const val duoyun: Int = 156
|
||||
const val xiayu: Int = 157
|
||||
const val chaopiao: Int = 158
|
||||
const val xiongmao: Int = 159
|
||||
const val dengpao: Int = 160
|
||||
const val fengche: Int = 161
|
||||
const val naozhong: Int = 162
|
||||
const val dasan: Int = 163
|
||||
const val caiqiu: Int = 164
|
||||
const val zuanjie: Int = 165
|
||||
const val shafa: Int = 166
|
||||
const val zhijin: Int = 167
|
||||
const val yao: Int = 168
|
||||
const val shouqiang: Int = 169
|
||||
const val qingwa: Int = 170
|
||||
}
|
||||
|
||||
override fun eq(other: Message): Boolean {
|
||||
return other is Face && other.id == this.id
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @author LamGC
|
||||
*/
|
||||
@Suppress("SpellCheckingInspection", "unused")
|
||||
@UseExperimental(ExperimentalUnsignedTypes::class)
|
||||
inline class FaceId constructor(inline val value: UByte) {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
val unknown: FaceId = FaceId(0xffu)
|
||||
@JvmStatic
|
||||
val jingya: FaceId = FaceId(0u)
|
||||
@JvmStatic
|
||||
val piezui: FaceId = FaceId(1u)
|
||||
@JvmStatic
|
||||
val se: FaceId = FaceId(2u)
|
||||
@JvmStatic
|
||||
val fadai: FaceId = FaceId(3u)
|
||||
@JvmStatic
|
||||
val deyi: FaceId = FaceId(4u)
|
||||
@JvmStatic
|
||||
val liulei: FaceId = FaceId(5u)
|
||||
@JvmStatic
|
||||
val haixiu: FaceId = FaceId(6u)
|
||||
@JvmStatic
|
||||
val bizui: FaceId = FaceId(7u)
|
||||
@JvmStatic
|
||||
val shui: FaceId = FaceId(8u)
|
||||
@JvmStatic
|
||||
val daku: FaceId = FaceId(9u)
|
||||
@JvmStatic
|
||||
val ganga: FaceId = FaceId(10u)
|
||||
@JvmStatic
|
||||
val fanu: FaceId = FaceId(11u)
|
||||
@JvmStatic
|
||||
val tiaopi: FaceId = FaceId(12u)
|
||||
@JvmStatic
|
||||
val ciya: FaceId = FaceId(13u)
|
||||
@JvmStatic
|
||||
val weixiao: FaceId = FaceId(14u)
|
||||
@JvmStatic
|
||||
val nanguo: FaceId = FaceId(15u)
|
||||
@JvmStatic
|
||||
val ku: FaceId = FaceId(16u)
|
||||
@JvmStatic
|
||||
val zhuakuang: FaceId = FaceId(18u)
|
||||
@JvmStatic
|
||||
val tu: FaceId = FaceId(19u)
|
||||
@JvmStatic
|
||||
val touxiao: FaceId = FaceId(20u)
|
||||
@JvmStatic
|
||||
val keai: FaceId = FaceId(21u)
|
||||
@JvmStatic
|
||||
val baiyan: FaceId = FaceId(22u)
|
||||
@JvmStatic
|
||||
val aoman: FaceId = FaceId(23u)
|
||||
@JvmStatic
|
||||
val ji_e: FaceId = FaceId(24u)
|
||||
@JvmStatic
|
||||
val kun: FaceId = FaceId(25u)
|
||||
@JvmStatic
|
||||
val jingkong: FaceId = FaceId(26u)
|
||||
@JvmStatic
|
||||
val liuhan: FaceId = FaceId(27u)
|
||||
@JvmStatic
|
||||
val hanxiao: FaceId = FaceId(28u)
|
||||
@JvmStatic
|
||||
val dabing: FaceId = FaceId(29u)
|
||||
@JvmStatic
|
||||
val fendou: FaceId = FaceId(30u)
|
||||
@JvmStatic
|
||||
val zhouma: FaceId = FaceId(31u)
|
||||
@JvmStatic
|
||||
val yiwen: FaceId = FaceId(32u)
|
||||
@JvmStatic
|
||||
val yun: FaceId = FaceId(34u)
|
||||
@JvmStatic
|
||||
val zhemo: FaceId = FaceId(35u)
|
||||
@JvmStatic
|
||||
val shuai: FaceId = FaceId(36u)
|
||||
@JvmStatic
|
||||
val kulou: FaceId = FaceId(37u)
|
||||
@JvmStatic
|
||||
val qiaoda: FaceId = FaceId(38u)
|
||||
@JvmStatic
|
||||
val zaijian: FaceId = FaceId(39u)
|
||||
@JvmStatic
|
||||
val fadou: FaceId = FaceId(41u)
|
||||
@JvmStatic
|
||||
val aiqing: FaceId = FaceId(42u)
|
||||
@JvmStatic
|
||||
val tiaotiao: FaceId = FaceId(43u)
|
||||
@JvmStatic
|
||||
val zhutou: FaceId = FaceId(46u)
|
||||
@JvmStatic
|
||||
val yongbao: FaceId = FaceId(49u)
|
||||
@JvmStatic
|
||||
val dan_gao: FaceId = FaceId(53u)
|
||||
@JvmStatic
|
||||
val shandian: FaceId = FaceId(54u)
|
||||
@JvmStatic
|
||||
val zhadan: FaceId = FaceId(55u)
|
||||
@JvmStatic
|
||||
val dao: FaceId = FaceId(56u)
|
||||
@JvmStatic
|
||||
val zuqiu: FaceId = FaceId(57u)
|
||||
@JvmStatic
|
||||
val bianbian: FaceId = FaceId(59u)
|
||||
@JvmStatic
|
||||
val kafei: FaceId = FaceId(60u)
|
||||
@JvmStatic
|
||||
val fan: FaceId = FaceId(61u)
|
||||
@JvmStatic
|
||||
val meigui: FaceId = FaceId(63u)
|
||||
@JvmStatic
|
||||
val diaoxie: FaceId = FaceId(64u)
|
||||
@JvmStatic
|
||||
val aixin: FaceId = FaceId(66u)
|
||||
@JvmStatic
|
||||
val xinsui: FaceId = FaceId(67u)
|
||||
@JvmStatic
|
||||
val liwu: FaceId = FaceId(69u)
|
||||
@JvmStatic
|
||||
val taiyang: FaceId = FaceId(74u)
|
||||
@JvmStatic
|
||||
val yueliang: FaceId = FaceId(75u)
|
||||
@JvmStatic
|
||||
val qiang: FaceId = FaceId(76u)
|
||||
@JvmStatic
|
||||
val ruo: FaceId = FaceId(77u)
|
||||
@JvmStatic
|
||||
val woshou: FaceId = FaceId(78u)
|
||||
@JvmStatic
|
||||
val shengli: FaceId = FaceId(79u)
|
||||
@JvmStatic
|
||||
val feiwen: FaceId = FaceId(85u)
|
||||
@JvmStatic
|
||||
val naohuo: FaceId = FaceId(86u)
|
||||
@JvmStatic
|
||||
val xigua: FaceId = FaceId(89u)
|
||||
@JvmStatic
|
||||
val lenghan: FaceId = FaceId(96u)
|
||||
@JvmStatic
|
||||
val cahan: FaceId = FaceId(97u)
|
||||
@JvmStatic
|
||||
val koubi: FaceId = FaceId(98u)
|
||||
@JvmStatic
|
||||
val guzhang: FaceId = FaceId(99u)
|
||||
@JvmStatic
|
||||
val qiudale: FaceId = FaceId(100u)
|
||||
@JvmStatic
|
||||
val huaixiao: FaceId = FaceId(101u)
|
||||
@JvmStatic
|
||||
val zuohengheng: FaceId = FaceId(102u)
|
||||
@JvmStatic
|
||||
val youhengheng: FaceId = FaceId(103u)
|
||||
@JvmStatic
|
||||
val haqian: FaceId = FaceId(104u)
|
||||
@JvmStatic
|
||||
val bishi: FaceId = FaceId(105u)
|
||||
@JvmStatic
|
||||
val weiqu: FaceId = FaceId(106u)
|
||||
@JvmStatic
|
||||
val kuaikule: FaceId = FaceId(107u)
|
||||
@JvmStatic
|
||||
val yinxian: FaceId = FaceId(108u)
|
||||
@JvmStatic
|
||||
val qinqin: FaceId = FaceId(109u)
|
||||
@JvmStatic
|
||||
val xia: FaceId = FaceId(110u)
|
||||
@JvmStatic
|
||||
val kelian: FaceId = FaceId(111u)
|
||||
@JvmStatic
|
||||
val caidao: FaceId = FaceId(112u)
|
||||
@JvmStatic
|
||||
val pijiu: FaceId = FaceId(113u)
|
||||
@JvmStatic
|
||||
val lanqiu: FaceId = FaceId(114u)
|
||||
@JvmStatic
|
||||
val pingpang: FaceId = FaceId(115u)
|
||||
@JvmStatic
|
||||
val shiai: FaceId = FaceId(116u)
|
||||
@JvmStatic
|
||||
val piaochong: FaceId = FaceId(117u)
|
||||
@JvmStatic
|
||||
val baoquan: FaceId = FaceId(118u)
|
||||
@JvmStatic
|
||||
val gouyin: FaceId = FaceId(119u)
|
||||
@JvmStatic
|
||||
val quantou: FaceId = FaceId(120u)
|
||||
@JvmStatic
|
||||
val chajin: FaceId = FaceId(121u)
|
||||
@JvmStatic
|
||||
val aini: FaceId = FaceId(122u)
|
||||
@JvmStatic
|
||||
val bu: FaceId = FaceId(123u)
|
||||
@JvmStatic
|
||||
val hao: FaceId = FaceId(124u)
|
||||
@JvmStatic
|
||||
val zhuanquan: FaceId = FaceId(125u)
|
||||
@JvmStatic
|
||||
val ketou: FaceId = FaceId(126u)
|
||||
@JvmStatic
|
||||
val huitou: FaceId = FaceId(127u)
|
||||
@JvmStatic
|
||||
val tiaosheng: FaceId = FaceId(128u)
|
||||
@JvmStatic
|
||||
val huishou: FaceId = FaceId(129u)
|
||||
@JvmStatic
|
||||
val jidong: FaceId = FaceId(130u)
|
||||
@JvmStatic
|
||||
val jiewu: FaceId = FaceId(131u)
|
||||
@JvmStatic
|
||||
val xianwen: FaceId = FaceId(132u)
|
||||
@JvmStatic
|
||||
val zuotaiji: FaceId = FaceId(133u)
|
||||
@JvmStatic
|
||||
val youtaiji: FaceId = FaceId(134u)
|
||||
@JvmStatic
|
||||
val shuangxi: FaceId = FaceId(136u)
|
||||
@JvmStatic
|
||||
val bianpao: FaceId = FaceId(137u)
|
||||
@JvmStatic
|
||||
val denglong: FaceId = FaceId(138u)
|
||||
@JvmStatic
|
||||
val facai: FaceId = FaceId(139u)
|
||||
@JvmStatic
|
||||
val K_ge: FaceId = FaceId(140u)
|
||||
@JvmStatic
|
||||
val gouwu: FaceId = FaceId(141u)
|
||||
@JvmStatic
|
||||
val youjian: FaceId = FaceId(142u)
|
||||
@JvmStatic
|
||||
val shuai_qi: FaceId = FaceId(143u)
|
||||
@JvmStatic
|
||||
val hecai: FaceId = FaceId(144u)
|
||||
@JvmStatic
|
||||
val qidao: FaceId = FaceId(145u)
|
||||
@JvmStatic
|
||||
val baojin: FaceId = FaceId(146u)
|
||||
@JvmStatic
|
||||
val bangbangtang: FaceId = FaceId(147u)
|
||||
@JvmStatic
|
||||
val he_nai: FaceId = FaceId(148u)
|
||||
@JvmStatic
|
||||
val xiamian: FaceId = FaceId(149u)
|
||||
@JvmStatic
|
||||
val xiangjiao: FaceId = FaceId(150u)
|
||||
@JvmStatic
|
||||
val feiji: FaceId = FaceId(151u)
|
||||
@JvmStatic
|
||||
val kaiche: FaceId = FaceId(152u)
|
||||
@JvmStatic
|
||||
val gaotiezuochetou: FaceId = FaceId(153u)
|
||||
@JvmStatic
|
||||
val chexiang: FaceId = FaceId(154u)
|
||||
@JvmStatic
|
||||
val gaotieyouchetou: FaceId = FaceId(155u)
|
||||
@JvmStatic
|
||||
val duoyun: FaceId = FaceId(156u)
|
||||
@JvmStatic
|
||||
val xiayu: FaceId = FaceId(157u)
|
||||
@JvmStatic
|
||||
val chaopiao: FaceId = FaceId(158u)
|
||||
@JvmStatic
|
||||
val xiongmao: FaceId = FaceId(159u)
|
||||
@JvmStatic
|
||||
val dengpao: FaceId = FaceId(160u)
|
||||
@JvmStatic
|
||||
val fengche: FaceId = FaceId(161u)
|
||||
@JvmStatic
|
||||
val naozhong: FaceId = FaceId(162u)
|
||||
@JvmStatic
|
||||
val dasan: FaceId = FaceId(163u)
|
||||
@JvmStatic
|
||||
val caiqiu: FaceId = FaceId(164u)
|
||||
@JvmStatic
|
||||
val zuanjie: FaceId = FaceId(165u)
|
||||
@JvmStatic
|
||||
val shafa: FaceId = FaceId(166u)
|
||||
@JvmStatic
|
||||
val zhijin: FaceId = FaceId(167u)
|
||||
@JvmStatic
|
||||
val yao: FaceId = FaceId(168u)
|
||||
@JvmStatic
|
||||
val shouqiang: FaceId = FaceId(169u)
|
||||
@JvmStatic
|
||||
val qingwa: FaceId = FaceId(170u)
|
||||
}
|
||||
|
||||
override fun toString(): String = "$FaceId($value)"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user