Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
M
Mirai
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
Mirai
Commits
a81eea42
Commit
a81eea42
authored
Feb 19, 2020
by
Him188
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Face decoding
parent
7de04824
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
162 additions
and
298 deletions
+162
-298
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt
...in/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt
+13
-1
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt
...rc/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt
+149
-297
No files found.
mirai-core-qqandroid/src/commonMain/kotlin/net/mamoe/mirai/qqandroid/message/MessageQQA.kt
View file @
a81eea42
...
@@ -86,6 +86,16 @@ _400Height=0x000000EB(235)
...
@@ -86,6 +86,16 @@ _400Height=0x000000EB(235)
pbReserve=<Empty ByteArray>
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
=
(
0
x1445
-
4
+
this
.
id
).
toShort
().
toByteArray
(),
buf
=
FACE_BUF
)
}
internal
fun
CustomFaceFromFile
.
toJceData
():
ImMsgBody
.
CustomFace
{
internal
fun
CustomFaceFromFile
.
toJceData
():
ImMsgBody
.
CustomFace
{
return
ImMsgBody
.
CustomFace
(
return
ImMsgBody
.
CustomFace
(
filePath
=
this
.
filepath
,
filePath
=
this
.
filepath
,
...
@@ -213,6 +223,7 @@ internal fun MessageChain.toRichTextElems(): MutableList<ImMsgBody.Elem> {
...
@@ -213,6 +223,7 @@ internal fun MessageChain.toRichTextElems(): MutableList<ImMsgBody.Elem> {
is
NotOnlineImageFromServer
->
elements
.
add
(
ImMsgBody
.
Elem
(
notOnlineImage
=
it
.
delegate
))
is
NotOnlineImageFromServer
->
elements
.
add
(
ImMsgBody
.
Elem
(
notOnlineImage
=
it
.
delegate
))
is
NotOnlineImageFromFile
->
elements
.
add
(
ImMsgBody
.
Elem
(
notOnlineImage
=
it
.
toJceData
()))
is
NotOnlineImageFromFile
->
elements
.
add
(
ImMsgBody
.
Elem
(
notOnlineImage
=
it
.
toJceData
()))
is
AtAll
->
elements
.
add
(
atAllData
)
is
AtAll
->
elements
.
add
(
atAllData
)
is
Face
->
elements
.
add
(
ImMsgBody
.
Elem
(
face
=
it
.
toJceData
()))
is
QuoteReply
,
is
QuoteReply
,
is
MessageSource
->
{
is
MessageSource
->
{
...
@@ -312,6 +323,7 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChain) {
...
@@ -312,6 +323,7 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChain) {
it
.
srcMsg
!=
null
->
message
.
add
(
QuoteReply
(
MessageSourceFromServer
(
it
.
srcMsg
)))
it
.
srcMsg
!=
null
->
message
.
add
(
QuoteReply
(
MessageSourceFromServer
(
it
.
srcMsg
)))
it
.
notOnlineImage
!=
null
->
message
.
add
(
NotOnlineImageFromServer
(
it
.
notOnlineImage
))
it
.
notOnlineImage
!=
null
->
message
.
add
(
NotOnlineImageFromServer
(
it
.
notOnlineImage
))
it
.
customFace
!=
null
->
message
.
add
(
CustomFaceFromServer
(
it
.
customFace
))
it
.
customFace
!=
null
->
message
.
add
(
CustomFaceFromServer
(
it
.
customFace
))
it
.
face
!=
null
->
message
.
add
(
Face
(
it
.
face
.
index
))
it
.
text
!=
null
->
{
it
.
text
!=
null
->
{
if
(
it
.
text
.
attr6Buf
.
isEmpty
())
{
if
(
it
.
text
.
attr6Buf
.
isEmpty
())
{
message
.
add
(
it
.
text
.
str
.
toMessage
())
message
.
add
(
it
.
text
.
str
.
toMessage
())
...
@@ -323,7 +335,7 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChain) {
...
@@ -323,7 +335,7 @@ internal fun List<ImMsgBody.Elem>.joinToMessageChain(message: MessageChain) {
discardExact
(
7
)
discardExact
(
7
)
id
=
readUInt
().
toLong
()
id
=
readUInt
().
toLong
()
}
}
if
(
id
==
0L
){
if
(
id
==
0L
)
{
message
.
add
(
AtAll
)
message
.
add
(
AtAll
)
}
else
{
}
else
{
message
.
add
(
At
(
id
,
it
.
text
.
str
))
message
.
add
(
At
(
id
,
it
.
text
.
str
))
...
...
mirai-core/src/commonMain/kotlin/net.mamoe.mirai/message/data/Face.kt
View file @
a81eea42
...
@@ -14,309 +14,161 @@ package net.mamoe.mirai.message.data
...
@@ -14,309 +14,161 @@ package net.mamoe.mirai.message.data
import
kotlin.jvm.JvmMultifileClass
import
kotlin.jvm.JvmMultifileClass
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmName
import
kotlin.jvm.JvmStatic
/**
/**
* QQ 自带表情
* QQ 自带表情
*/
*/
inline
class
Face
(
val
id
:
FaceId
)
:
Message
{
class
Face
(
val
id
:
Int
)
:
Message
{
override
fun
toString
():
String
=
"[
face${id.value}
]"
override
fun
toString
():
String
=
"[
mirai:face$id
]"
companion
object
Key
:
Message
.
Key
<
Face
>
/**
override
fun
eq
(
other
:
Message
):
Boolean
{
return
other
is
Face
&&
other
.
id
==
this
.
id
}
}
/**
* @author LamGC
* @author LamGC
*/
*/
@Suppress
(
"SpellCheckingInspection"
,
"unused"
)
@Suppress
(
"SpellCheckingInspection"
,
"unused"
)
@UseExperimental
(
ExperimentalUnsignedTypes
::
class
)
companion
object
IdList
:
Message
.
Key
<
Face
>
{
inline
class
FaceId
constructor
(
inline
val
value
:
UByte
)
{
const
val
unknown
:
Int
=
0
xff
companion
object
{
const
val
jingya
:
Int
=
0
@JvmStatic
const
val
piezui
:
Int
=
1
val
unknown
:
FaceId
=
FaceId
(
0
xffu
)
const
val
se
:
Int
=
2
@JvmStatic
const
val
fadai
:
Int
=
3
val
jingya
:
FaceId
=
FaceId
(
0
u
)
const
val
deyi
:
Int
=
4
@JvmStatic
const
val
liulei
:
Int
=
5
val
piezui
:
FaceId
=
FaceId
(
1
u
)
const
val
haixiu
:
Int
=
6
@JvmStatic
const
val
bizui
:
Int
=
7
val
se
:
FaceId
=
FaceId
(
2
u
)
const
val
shui
:
Int
=
8
@JvmStatic
const
val
daku
:
Int
=
9
val
fadai
:
FaceId
=
FaceId
(
3
u
)
const
val
ganga
:
Int
=
10
@JvmStatic
const
val
fanu
:
Int
=
11
val
deyi
:
FaceId
=
FaceId
(
4
u
)
const
val
tiaopi
:
Int
=
12
@JvmStatic
const
val
ciya
:
Int
=
13
val
liulei
:
FaceId
=
FaceId
(
5
u
)
const
val
weixiao
:
Int
=
14
@JvmStatic
const
val
nanguo
:
Int
=
15
val
haixiu
:
FaceId
=
FaceId
(
6
u
)
const
val
ku
:
Int
=
16
@JvmStatic
const
val
zhuakuang
:
Int
=
18
val
bizui
:
FaceId
=
FaceId
(
7
u
)
const
val
tu
:
Int
=
19
@JvmStatic
const
val
touxiao
:
Int
=
20
val
shui
:
FaceId
=
FaceId
(
8
u
)
const
val
keai
:
Int
=
21
@JvmStatic
const
val
baiyan
:
Int
=
22
val
daku
:
FaceId
=
FaceId
(
9
u
)
const
val
aoman
:
Int
=
23
@JvmStatic
const
val
ji_e
:
Int
=
24
val
ganga
:
FaceId
=
FaceId
(
10
u
)
const
val
kun
:
Int
=
25
@JvmStatic
const
val
jingkong
:
Int
=
26
val
fanu
:
FaceId
=
FaceId
(
11
u
)
const
val
liuhan
:
Int
=
27
@JvmStatic
const
val
hanxiao
:
Int
=
28
val
tiaopi
:
FaceId
=
FaceId
(
12
u
)
const
val
dabing
:
Int
=
29
@JvmStatic
const
val
fendou
:
Int
=
30
val
ciya
:
FaceId
=
FaceId
(
13
u
)
const
val
zhouma
:
Int
=
31
@JvmStatic
const
val
yiwen
:
Int
=
32
val
weixiao
:
FaceId
=
FaceId
(
14
u
)
const
val
yun
:
Int
=
34
@JvmStatic
const
val
zhemo
:
Int
=
35
val
nanguo
:
FaceId
=
FaceId
(
15
u
)
const
val
shuai
:
Int
=
36
@JvmStatic
const
val
kulou
:
Int
=
37
val
ku
:
FaceId
=
FaceId
(
16
u
)
const
val
qiaoda
:
Int
=
38
@JvmStatic
const
val
zaijian
:
Int
=
39
val
zhuakuang
:
FaceId
=
FaceId
(
18
u
)
const
val
fadou
:
Int
=
41
@JvmStatic
const
val
aiqing
:
Int
=
42
val
tu
:
FaceId
=
FaceId
(
19
u
)
const
val
tiaotiao
:
Int
=
43
@JvmStatic
const
val
zhutou
:
Int
=
46
val
touxiao
:
FaceId
=
FaceId
(
20
u
)
const
val
yongbao
:
Int
=
49
@JvmStatic
const
val
dan_gao
:
Int
=
53
val
keai
:
FaceId
=
FaceId
(
21
u
)
const
val
shandian
:
Int
=
54
@JvmStatic
const
val
zhadan
:
Int
=
55
val
baiyan
:
FaceId
=
FaceId
(
22
u
)
const
val
dao
:
Int
=
56
@JvmStatic
const
val
zuqiu
:
Int
=
57
val
aoman
:
FaceId
=
FaceId
(
23
u
)
const
val
bianbian
:
Int
=
59
@JvmStatic
const
val
kafei
:
Int
=
60
val
ji_e
:
FaceId
=
FaceId
(
24
u
)
const
val
fan
:
Int
=
61
@JvmStatic
const
val
meigui
:
Int
=
63
val
kun
:
FaceId
=
FaceId
(
25
u
)
const
val
diaoxie
:
Int
=
64
@JvmStatic
const
val
aixin
:
Int
=
66
val
jingkong
:
FaceId
=
FaceId
(
26
u
)
const
val
xinsui
:
Int
=
67
@JvmStatic
const
val
liwu
:
Int
=
69
val
liuhan
:
FaceId
=
FaceId
(
27
u
)
const
val
taiyang
:
Int
=
74
@JvmStatic
const
val
yueliang
:
Int
=
75
val
hanxiao
:
FaceId
=
FaceId
(
28
u
)
const
val
qiang
:
Int
=
76
@JvmStatic
const
val
ruo
:
Int
=
77
val
dabing
:
FaceId
=
FaceId
(
29
u
)
const
val
woshou
:
Int
=
78
@JvmStatic
const
val
shengli
:
Int
=
79
val
fendou
:
FaceId
=
FaceId
(
30
u
)
const
val
feiwen
:
Int
=
85
@JvmStatic
const
val
naohuo
:
Int
=
86
val
zhouma
:
FaceId
=
FaceId
(
31
u
)
const
val
xigua
:
Int
=
89
@JvmStatic
const
val
lenghan
:
Int
=
96
val
yiwen
:
FaceId
=
FaceId
(
32
u
)
const
val
cahan
:
Int
=
97
@JvmStatic
const
val
koubi
:
Int
=
98
val
yun
:
FaceId
=
FaceId
(
34
u
)
const
val
guzhang
:
Int
=
99
@JvmStatic
const
val
qiudale
:
Int
=
100
val
zhemo
:
FaceId
=
FaceId
(
35
u
)
const
val
huaixiao
:
Int
=
101
@JvmStatic
const
val
zuohengheng
:
Int
=
102
val
shuai
:
FaceId
=
FaceId
(
36
u
)
const
val
youhengheng
:
Int
=
103
@JvmStatic
const
val
haqian
:
Int
=
104
val
kulou
:
FaceId
=
FaceId
(
37
u
)
const
val
bishi
:
Int
=
105
@JvmStatic
const
val
weiqu
:
Int
=
106
val
qiaoda
:
FaceId
=
FaceId
(
38
u
)
const
val
kuaikule
:
Int
=
107
@JvmStatic
const
val
yinxian
:
Int
=
108
val
zaijian
:
FaceId
=
FaceId
(
39
u
)
const
val
qinqin
:
Int
=
109
@JvmStatic
const
val
xia
:
Int
=
110
val
fadou
:
FaceId
=
FaceId
(
41
u
)
const
val
kelian
:
Int
=
111
@JvmStatic
const
val
caidao
:
Int
=
112
val
aiqing
:
FaceId
=
FaceId
(
42
u
)
const
val
pijiu
:
Int
=
113
@JvmStatic
const
val
lanqiu
:
Int
=
114
val
tiaotiao
:
FaceId
=
FaceId
(
43
u
)
const
val
pingpang
:
Int
=
115
@JvmStatic
const
val
shiai
:
Int
=
116
val
zhutou
:
FaceId
=
FaceId
(
46
u
)
const
val
piaochong
:
Int
=
117
@JvmStatic
const
val
baoquan
:
Int
=
118
val
yongbao
:
FaceId
=
FaceId
(
49
u
)
const
val
gouyin
:
Int
=
119
@JvmStatic
const
val
quantou
:
Int
=
120
val
dan_gao
:
FaceId
=
FaceId
(
53
u
)
const
val
chajin
:
Int
=
121
@JvmStatic
const
val
aini
:
Int
=
122
val
shandian
:
FaceId
=
FaceId
(
54
u
)
const
val
bu
:
Int
=
123
@JvmStatic
const
val
hao
:
Int
=
124
val
zhadan
:
FaceId
=
FaceId
(
55
u
)
const
val
zhuanquan
:
Int
=
125
@JvmStatic
const
val
ketou
:
Int
=
126
val
dao
:
FaceId
=
FaceId
(
56
u
)
const
val
huitou
:
Int
=
127
@JvmStatic
const
val
tiaosheng
:
Int
=
128
val
zuqiu
:
FaceId
=
FaceId
(
57
u
)
const
val
huishou
:
Int
=
129
@JvmStatic
const
val
jidong
:
Int
=
130
val
bianbian
:
FaceId
=
FaceId
(
59
u
)
const
val
jiewu
:
Int
=
131
@JvmStatic
const
val
xianwen
:
Int
=
132
val
kafei
:
FaceId
=
FaceId
(
60
u
)
const
val
zuotaiji
:
Int
=
133
@JvmStatic
const
val
youtaiji
:
Int
=
134
val
fan
:
FaceId
=
FaceId
(
61
u
)
const
val
shuangxi
:
Int
=
136
@JvmStatic
const
val
bianpao
:
Int
=
137
val
meigui
:
FaceId
=
FaceId
(
63
u
)
const
val
denglong
:
Int
=
138
@JvmStatic
const
val
facai
:
Int
=
139
val
diaoxie
:
FaceId
=
FaceId
(
64
u
)
const
val
K_ge
:
Int
=
140
@JvmStatic
const
val
gouwu
:
Int
=
141
val
aixin
:
FaceId
=
FaceId
(
66
u
)
const
val
youjian
:
Int
=
142
@JvmStatic
const
val
shuai_qi
:
Int
=
143
val
xinsui
:
FaceId
=
FaceId
(
67
u
)
const
val
hecai
:
Int
=
144
@JvmStatic
const
val
qidao
:
Int
=
145
val
liwu
:
FaceId
=
FaceId
(
69
u
)
const
val
baojin
:
Int
=
146
@JvmStatic
const
val
bangbangtang
:
Int
=
147
val
taiyang
:
FaceId
=
FaceId
(
74
u
)
const
val
he_nai
:
Int
=
148
@JvmStatic
const
val
xiamian
:
Int
=
149
val
yueliang
:
FaceId
=
FaceId
(
75
u
)
const
val
xiangjiao
:
Int
=
150
@JvmStatic
const
val
feiji
:
Int
=
151
val
qiang
:
FaceId
=
FaceId
(
76
u
)
const
val
kaiche
:
Int
=
152
@JvmStatic
const
val
gaotiezuochetou
:
Int
=
153
val
ruo
:
FaceId
=
FaceId
(
77
u
)
const
val
chexiang
:
Int
=
154
@JvmStatic
const
val
gaotieyouchetou
:
Int
=
155
val
woshou
:
FaceId
=
FaceId
(
78
u
)
const
val
duoyun
:
Int
=
156
@JvmStatic
const
val
xiayu
:
Int
=
157
val
shengli
:
FaceId
=
FaceId
(
79
u
)
const
val
chaopiao
:
Int
=
158
@JvmStatic
const
val
xiongmao
:
Int
=
159
val
feiwen
:
FaceId
=
FaceId
(
85
u
)
const
val
dengpao
:
Int
=
160
@JvmStatic
const
val
fengche
:
Int
=
161
val
naohuo
:
FaceId
=
FaceId
(
86
u
)
const
val
naozhong
:
Int
=
162
@JvmStatic
const
val
dasan
:
Int
=
163
val
xigua
:
FaceId
=
FaceId
(
89
u
)
const
val
caiqiu
:
Int
=
164
@JvmStatic
const
val
zuanjie
:
Int
=
165
val
lenghan
:
FaceId
=
FaceId
(
96
u
)
const
val
shafa
:
Int
=
166
@JvmStatic
const
val
zhijin
:
Int
=
167
val
cahan
:
FaceId
=
FaceId
(
97
u
)
const
val
yao
:
Int
=
168
@JvmStatic
const
val
shouqiang
:
Int
=
169
val
koubi
:
FaceId
=
FaceId
(
98
u
)
const
val
qingwa
:
Int
=
170
@JvmStatic
val
guzhang
:
FaceId
=
FaceId
(
99
u
)
@JvmStatic
val
qiudale
:
FaceId
=
FaceId
(
100
u
)
@JvmStatic
val
huaixiao
:
FaceId
=
FaceId
(
101
u
)
@JvmStatic
val
zuohengheng
:
FaceId
=
FaceId
(
102
u
)
@JvmStatic
val
youhengheng
:
FaceId
=
FaceId
(
103
u
)
@JvmStatic
val
haqian
:
FaceId
=
FaceId
(
104
u
)
@JvmStatic
val
bishi
:
FaceId
=
FaceId
(
105
u
)
@JvmStatic
val
weiqu
:
FaceId
=
FaceId
(
106
u
)
@JvmStatic
val
kuaikule
:
FaceId
=
FaceId
(
107
u
)
@JvmStatic
val
yinxian
:
FaceId
=
FaceId
(
108
u
)
@JvmStatic
val
qinqin
:
FaceId
=
FaceId
(
109
u
)
@JvmStatic
val
xia
:
FaceId
=
FaceId
(
110
u
)
@JvmStatic
val
kelian
:
FaceId
=
FaceId
(
111
u
)
@JvmStatic
val
caidao
:
FaceId
=
FaceId
(
112
u
)
@JvmStatic
val
pijiu
:
FaceId
=
FaceId
(
113
u
)
@JvmStatic
val
lanqiu
:
FaceId
=
FaceId
(
114
u
)
@JvmStatic
val
pingpang
:
FaceId
=
FaceId
(
115
u
)
@JvmStatic
val
shiai
:
FaceId
=
FaceId
(
116
u
)
@JvmStatic
val
piaochong
:
FaceId
=
FaceId
(
117
u
)
@JvmStatic
val
baoquan
:
FaceId
=
FaceId
(
118
u
)
@JvmStatic
val
gouyin
:
FaceId
=
FaceId
(
119
u
)
@JvmStatic
val
quantou
:
FaceId
=
FaceId
(
120
u
)
@JvmStatic
val
chajin
:
FaceId
=
FaceId
(
121
u
)
@JvmStatic
val
aini
:
FaceId
=
FaceId
(
122
u
)
@JvmStatic
val
bu
:
FaceId
=
FaceId
(
123
u
)
@JvmStatic
val
hao
:
FaceId
=
FaceId
(
124
u
)
@JvmStatic
val
zhuanquan
:
FaceId
=
FaceId
(
125
u
)
@JvmStatic
val
ketou
:
FaceId
=
FaceId
(
126
u
)
@JvmStatic
val
huitou
:
FaceId
=
FaceId
(
127
u
)
@JvmStatic
val
tiaosheng
:
FaceId
=
FaceId
(
128
u
)
@JvmStatic
val
huishou
:
FaceId
=
FaceId
(
129
u
)
@JvmStatic
val
jidong
:
FaceId
=
FaceId
(
130
u
)
@JvmStatic
val
jiewu
:
FaceId
=
FaceId
(
131
u
)
@JvmStatic
val
xianwen
:
FaceId
=
FaceId
(
132
u
)
@JvmStatic
val
zuotaiji
:
FaceId
=
FaceId
(
133
u
)
@JvmStatic
val
youtaiji
:
FaceId
=
FaceId
(
134
u
)
@JvmStatic
val
shuangxi
:
FaceId
=
FaceId
(
136
u
)
@JvmStatic
val
bianpao
:
FaceId
=
FaceId
(
137
u
)
@JvmStatic
val
denglong
:
FaceId
=
FaceId
(
138
u
)
@JvmStatic
val
facai
:
FaceId
=
FaceId
(
139
u
)
@JvmStatic
val
K_ge
:
FaceId
=
FaceId
(
140
u
)
@JvmStatic
val
gouwu
:
FaceId
=
FaceId
(
141
u
)
@JvmStatic
val
youjian
:
FaceId
=
FaceId
(
142
u
)
@JvmStatic
val
shuai_qi
:
FaceId
=
FaceId
(
143
u
)
@JvmStatic
val
hecai
:
FaceId
=
FaceId
(
144
u
)
@JvmStatic
val
qidao
:
FaceId
=
FaceId
(
145
u
)
@JvmStatic
val
baojin
:
FaceId
=
FaceId
(
146
u
)
@JvmStatic
val
bangbangtang
:
FaceId
=
FaceId
(
147
u
)
@JvmStatic
val
he_nai
:
FaceId
=
FaceId
(
148
u
)
@JvmStatic
val
xiamian
:
FaceId
=
FaceId
(
149
u
)
@JvmStatic
val
xiangjiao
:
FaceId
=
FaceId
(
150
u
)
@JvmStatic
val
feiji
:
FaceId
=
FaceId
(
151
u
)
@JvmStatic
val
kaiche
:
FaceId
=
FaceId
(
152
u
)
@JvmStatic
val
gaotiezuochetou
:
FaceId
=
FaceId
(
153
u
)
@JvmStatic
val
chexiang
:
FaceId
=
FaceId
(
154
u
)
@JvmStatic
val
gaotieyouchetou
:
FaceId
=
FaceId
(
155
u
)
@JvmStatic
val
duoyun
:
FaceId
=
FaceId
(
156
u
)
@JvmStatic
val
xiayu
:
FaceId
=
FaceId
(
157
u
)
@JvmStatic
val
chaopiao
:
FaceId
=
FaceId
(
158
u
)
@JvmStatic
val
xiongmao
:
FaceId
=
FaceId
(
159
u
)
@JvmStatic
val
dengpao
:
FaceId
=
FaceId
(
160
u
)
@JvmStatic
val
fengche
:
FaceId
=
FaceId
(
161
u
)
@JvmStatic
val
naozhong
:
FaceId
=
FaceId
(
162
u
)
@JvmStatic
val
dasan
:
FaceId
=
FaceId
(
163
u
)
@JvmStatic
val
caiqiu
:
FaceId
=
FaceId
(
164
u
)
@JvmStatic
val
zuanjie
:
FaceId
=
FaceId
(
165
u
)
@JvmStatic
val
shafa
:
FaceId
=
FaceId
(
166
u
)
@JvmStatic
val
zhijin
:
FaceId
=
FaceId
(
167
u
)
@JvmStatic
val
yao
:
FaceId
=
FaceId
(
168
u
)
@JvmStatic
val
shouqiang
:
FaceId
=
FaceId
(
169
u
)
@JvmStatic
val
qingwa
:
FaceId
=
FaceId
(
170
u
)
}
}
override
fun
toString
():
String
=
"$FaceId($value)"
override
fun
eq
(
other
:
Message
):
Boolean
{
return
other
is
Face
&&
other
.
id
==
this
.
id
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment