mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-25 23:10:12 +08:00
add: SuperFaceProtocol (#2722)
* add: protocol * fix: MsgElemInfoServtype37 * add: AnimatedStickerProtocolTest * add: ... * rename: SuperFace * add: face impl * add: SuperFace toCommData * fix: stickerId * fix: SuperFace constructor * add: api dump * add: CodableMessage * add: api dump * fix: names size * fix: type * add: MessageVisitorTest * add: TestMiraiCode * add: MessageVisitorTest * add: TestMiraiCode * fix: no data class * feat: try from * add: api dump * add: hashCode, equals * [core] 优化 SuperFace API * fix tests --------- Co-authored-by: Him188 <Him188@mamoe.net>
This commit is contained in:
parent
5a450e850d
commit
93ccce16d8
@ -3467,6 +3467,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field BANG_BANG_TANG I
|
||||
public static final field BAN_ZHUAN_ZHONG I
|
||||
public static final field BAO_BAO I
|
||||
public static final field BAO_FU I
|
||||
public static final field BAO_JI I
|
||||
public static final field BAO_JIN I
|
||||
public static final field BAO_QUAN I
|
||||
@ -3496,6 +3497,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field CHI_GUA I
|
||||
public static final field CHI_TANG I
|
||||
public static final field CHONG_BAI I
|
||||
public static final field CUO_HAO I
|
||||
public static final field Companion Lnet/mamoe/mirai/message/data/Face$Companion;
|
||||
public static final field DAN I
|
||||
public static final field DAN_GAO I
|
||||
@ -3504,11 +3506,15 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field DA_KU I
|
||||
public static final field DA_LIAN I
|
||||
public static final field DA_XIAO I
|
||||
public static final field DA_YUAN_ZHONG I
|
||||
public static final field DA_ZHAN_HONG_TU I
|
||||
public static final field DA_ZHAO_HU I
|
||||
public static final field DENG_LONG I
|
||||
public static final field DE_YI I
|
||||
public static final field DIAN_ZAN I
|
||||
public static final field DIAO_XIE I
|
||||
public static final field DING_GUA_GUA I
|
||||
public static final field DUI_HAO I
|
||||
public static final field E I
|
||||
public static final field FAN I
|
||||
public static final field FA_DAI I
|
||||
@ -3518,6 +3524,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field FEI_WEN I
|
||||
public static final field FEN_DOU I
|
||||
public static final field FO_XI I
|
||||
public static final field FU_LUO_BO I
|
||||
public static final field GAN_BEI I
|
||||
public static final field GAN_GA I
|
||||
public static final field GONG_XI I
|
||||
@ -3538,11 +3545,15 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field HE_XIE I
|
||||
public static final field HONG_BAO I
|
||||
public static final field HONG_BAO_BAO I
|
||||
public static final field HONG_BAO_DUO_DUO I
|
||||
public static final field HUAI_XIAO I
|
||||
public static final field HUA_CHI I
|
||||
public static final field HUA_DUO_LIAN I
|
||||
public static final field HUI_SHOU I
|
||||
public static final field HUI_TOU I
|
||||
public static final field HU_HU_SHENG_WEI I
|
||||
public static final field HU_LIAN I
|
||||
public static final field JIA_YI I
|
||||
public static final field JIA_YOU I
|
||||
public static final field JIA_YOU_BAO_BAO I
|
||||
public static final field JIA_YOU_BI_SHENG I
|
||||
@ -3551,12 +3562,14 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field JING_KONG I
|
||||
public static final field JING_LI I
|
||||
public static final field JING_XI I
|
||||
public static final field JING_XIA I
|
||||
public static final field JING_YA I
|
||||
public static final field JI_DONG I
|
||||
public static final field JI_E I
|
||||
public static final field JI_ZHANG I
|
||||
public static final field JU_HUA I
|
||||
public static final field JU_JUE I
|
||||
public static final field JU_PAI_PAI I
|
||||
public static final field KAI_QIANG I
|
||||
public static final field KA_FEI I
|
||||
public static final field KEN_TOU I
|
||||
@ -3589,6 +3602,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field MEI_GUI I
|
||||
public static final field MIAN_WU_BIAO_QING I
|
||||
public static final field MIAO_MIAO I
|
||||
public static final field MING_BAI I
|
||||
public static final field MO_GUI_XIAO I
|
||||
public static final field MO_JIN_LI I
|
||||
public static final field MO_YU I
|
||||
@ -3597,6 +3611,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field NA_DAO_HONG_BAO I
|
||||
public static final field NIU_A I
|
||||
public static final field NIU_QI_CHONG_TIAN I
|
||||
public static final field NI_ZHEN_BANG_BANG I
|
||||
public static final field NO I
|
||||
public static final field O I
|
||||
public static final field OK I
|
||||
@ -3625,12 +3640,14 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field QUAN_TOU I
|
||||
public static final field RANG_WO_KANG_KANG I
|
||||
public static final field RENG_GOU I
|
||||
public static final field RE_HUA_LE I
|
||||
public static final field SAO_RAO I
|
||||
public static final field SE I
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
public static final field SHAN_DIAN I
|
||||
public static final field SHAN_LIAN I
|
||||
public static final field SHENG_LI I
|
||||
public static final field SHENG_QI I
|
||||
public static final field SHENG_RI_KUAI_LE I
|
||||
public static final field SHI_AI I
|
||||
public static final field SHOU_QIANG I
|
||||
@ -3639,8 +3656,10 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field SHUANG_XI I
|
||||
public static final field SHUI I
|
||||
public static final field SONG_HUA I
|
||||
public static final field SUAN_Q I
|
||||
public static final field TAI_NAN_LE I
|
||||
public static final field TAI_YANG I
|
||||
public static final field TIAN_PING I
|
||||
public static final field TIAN_YI_TIAN I
|
||||
public static final field TIAO_PI I
|
||||
public static final field TIAO_SHENG I
|
||||
@ -3653,13 +3672,16 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field TUO_LIAN I
|
||||
public static final field TUO_SAI I
|
||||
public static final field WANG_WANG I
|
||||
public static final field WAN_CHENG I
|
||||
public static final field WEI_QU I
|
||||
public static final field WEI_XIAO I
|
||||
public static final field WEN_HAO_LIAN I
|
||||
public static final field WO_BU_KAN I
|
||||
public static final field WO_FANG_LE I
|
||||
public static final field WO_MEI_SHI I
|
||||
public static final field WO_SHOU I
|
||||
public static final field WO_SUAN_LE I
|
||||
public static final field WO_XIANG_KAI_LE I
|
||||
public static final field WO_ZUI_MEI I
|
||||
public static final field WU_LIAN I
|
||||
public static final field WU_LIAO I
|
||||
@ -3678,6 +3700,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field XI_GUA I
|
||||
public static final field XU I
|
||||
public static final field YANG_TUO I
|
||||
public static final field YAN_HUA I
|
||||
public static final field YAO I
|
||||
public static final field YIN_XIAN I
|
||||
public static final field YI_WEN I
|
||||
@ -3717,10 +3740,12 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field names [Ljava/lang/String;
|
||||
public static final field 不 I
|
||||
public static final field 不开心 I
|
||||
public static final field 举牌牌 I
|
||||
public static final field 乒乓 I
|
||||
public static final field 亲亲 I
|
||||
public static final field 仔细分析 I
|
||||
public static final field 佛系 I
|
||||
public static final field 你真棒棒 I
|
||||
public static final field 便便 I
|
||||
public static final field 偷看 I
|
||||
public static final field 偷笑 I
|
||||
@ -3732,6 +3757,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 凋谢 I
|
||||
public static final field 击掌 I
|
||||
public static final field 刀 I
|
||||
public static final field 加一 I
|
||||
public static final field 加油 I
|
||||
public static final field 加油必胜 I
|
||||
public static final field 加油抱抱 I
|
||||
@ -3779,6 +3805,8 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 困 I
|
||||
public static final field 坏笑 I
|
||||
public static final field 大哭 I
|
||||
public static final field 大展宏兔 I
|
||||
public static final field 大怨种 I
|
||||
public static final field 大笑 I
|
||||
public static final field 太南了 I
|
||||
public static final field 太阳 I
|
||||
@ -3790,8 +3818,10 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 好闪 I
|
||||
public static final field 委屈 I
|
||||
public static final field 嫌弃 I
|
||||
public static final field 完成 I
|
||||
public static final field 害怕 I
|
||||
public static final field 害羞 I
|
||||
public static final field 对号 I
|
||||
public static final field 小样儿 I
|
||||
public static final field 小纠结 I
|
||||
public static final field 尴尬 I
|
||||
@ -3813,18 +3843,22 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 怄火 I
|
||||
public static final field 恭喜 I
|
||||
public static final field 悠闲 I
|
||||
public static final field 惊吓 I
|
||||
public static final field 惊呆 I
|
||||
public static final field 惊喜 I
|
||||
public static final field 惊恐 I
|
||||
public static final field 惊讶 I
|
||||
public static final field 憨笑 I
|
||||
public static final field 我不看 I
|
||||
public static final field 我想开了 I
|
||||
public static final field 我方了 I
|
||||
public static final field 我最美 I
|
||||
public static final field 我没事 I
|
||||
public static final field 我酸了 I
|
||||
public static final field 扇脸 I
|
||||
public static final field 手枪 I
|
||||
public static final field 打call I
|
||||
public static final field 打招呼 I
|
||||
public static final field 打脸 I
|
||||
public static final field 扔狗 I
|
||||
public static final field 托脸 I
|
||||
@ -3863,6 +3897,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 无奈 I
|
||||
public static final field 无眼笑 I
|
||||
public static final field 无聊 I
|
||||
public static final field 明白 I
|
||||
public static final field 晕 I
|
||||
public static final field 暗中观察 I
|
||||
public static final field 暴击 I
|
||||
@ -3882,6 +3917,8 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 灯笼 I
|
||||
public static final field 炸弹 I
|
||||
public static final field 点赞 I
|
||||
public static final field 烟花 I
|
||||
public static final field 热化了 I
|
||||
public static final field 爆筋 I
|
||||
public static final field 爱你 I
|
||||
public static final field 爱心 I
|
||||
@ -3894,6 +3931,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 玫瑰 I
|
||||
public static final field 瓢虫 I
|
||||
public static final field 生日快乐 I
|
||||
public static final field 生气 I
|
||||
public static final field 甩头 I
|
||||
public static final field 疑问 I
|
||||
public static final field 白眼 I
|
||||
@ -3905,25 +3943,30 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 示爱 I
|
||||
public static final field 礼物 I
|
||||
public static final field 祈祷 I
|
||||
public static final field 福萝卜 I
|
||||
public static final field 笑哭 I
|
||||
public static final field 篮球 I
|
||||
public static final field 糊脸 I
|
||||
public static final field 糗大了 I
|
||||
public static final field 红包 I
|
||||
public static final field 红包包 I
|
||||
public static final field 红包多多 I
|
||||
public static final field 羊驼 I
|
||||
public static final field 老色痞 I
|
||||
public static final field 胖三斤 I
|
||||
public static final field 胜利 I
|
||||
public static final field 脑阔疼 I
|
||||
public static final field 舔一舔 I
|
||||
public static final field 舔屏 I
|
||||
public static final field 色 I
|
||||
public static final field 花朵脸 I
|
||||
public static final field 花痴 I
|
||||
public static final field 茶 I
|
||||
public static final field 药 I
|
||||
public static final field 菊花 I
|
||||
public static final field 菜刀 I
|
||||
public static final field 菜狗 I
|
||||
public static final field 虎虎生威 I
|
||||
public static final field 蛋 I
|
||||
public static final field 蛋糕 I
|
||||
public static final field 街舞 I
|
||||
@ -3933,6 +3976,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 请 I
|
||||
public static final field 调皮 I
|
||||
public static final field 谢红包 I
|
||||
public static final field 豹富 I
|
||||
public static final field 赞 I
|
||||
public static final field 足球 I
|
||||
public static final field 跳绳 I
|
||||
@ -3945,7 +3989,9 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 送花 I
|
||||
public static final field 鄙视 I
|
||||
public static final field 酷 I
|
||||
public static final field 酸Q I
|
||||
public static final field 钞票 I
|
||||
public static final field 错号 I
|
||||
public static final field 闪电 I
|
||||
public static final field 闭嘴 I
|
||||
public static final field 问号脸 I
|
||||
@ -5355,6 +5401,47 @@ public final class net/mamoe/mirai/message/data/SingleMessage$Serializer : kotli
|
||||
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lnet/mamoe/mirai/message/data/SingleMessage;)V
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFace : net/mamoe/mirai/message/code/CodableMessage, net/mamoe/mirai/message/data/HummerMessage {
|
||||
public static final field Key Lnet/mamoe/mirai/message/data/SuperFace$Key;
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
public synthetic fun <init> (IILjava/lang/String;ILkotlinx/serialization/internal/SerializationConstructorMarker;)V
|
||||
public fun contentToString ()Ljava/lang/String;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static final fun from (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public static final fun fromOrNull (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public final fun getFace ()I
|
||||
public final fun getId ()Ljava/lang/String;
|
||||
public fun getKey ()Lnet/mamoe/mirai/message/data/MessageKey;
|
||||
public final fun getName ()Ljava/lang/String;
|
||||
public final fun getType ()I
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static final fun write$Self (Lnet/mamoe/mirai/message/data/SuperFace;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFace$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
|
||||
public static final field INSTANCE Lnet/mamoe/mirai/message/data/SuperFace$$serializer;
|
||||
public fun childSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
|
||||
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
|
||||
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
|
||||
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lnet/mamoe/mirai/message/data/SuperFace;)V
|
||||
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFace$Key : net/mamoe/mirai/message/data/AbstractPolymorphicMessageKey {
|
||||
public final fun from (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public final fun fromOrNull (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFaceKt {
|
||||
public static final synthetic fun toFace (Lnet/mamoe/mirai/message/data/SuperFace;)Lnet/mamoe/mirai/message/data/Face;
|
||||
public static final synthetic fun toSuperFace (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public static final synthetic fun toSuperFaceOrNull (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
}
|
||||
|
||||
public abstract interface class net/mamoe/mirai/message/data/UnsupportedMessage : net/mamoe/mirai/message/data/MessageContent {
|
||||
public static final field Companion Lnet/mamoe/mirai/message/data/UnsupportedMessage$Companion;
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
|
@ -3467,6 +3467,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field BANG_BANG_TANG I
|
||||
public static final field BAN_ZHUAN_ZHONG I
|
||||
public static final field BAO_BAO I
|
||||
public static final field BAO_FU I
|
||||
public static final field BAO_JI I
|
||||
public static final field BAO_JIN I
|
||||
public static final field BAO_QUAN I
|
||||
@ -3496,6 +3497,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field CHI_GUA I
|
||||
public static final field CHI_TANG I
|
||||
public static final field CHONG_BAI I
|
||||
public static final field CUO_HAO I
|
||||
public static final field Companion Lnet/mamoe/mirai/message/data/Face$Companion;
|
||||
public static final field DAN I
|
||||
public static final field DAN_GAO I
|
||||
@ -3504,11 +3506,15 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field DA_KU I
|
||||
public static final field DA_LIAN I
|
||||
public static final field DA_XIAO I
|
||||
public static final field DA_YUAN_ZHONG I
|
||||
public static final field DA_ZHAN_HONG_TU I
|
||||
public static final field DA_ZHAO_HU I
|
||||
public static final field DENG_LONG I
|
||||
public static final field DE_YI I
|
||||
public static final field DIAN_ZAN I
|
||||
public static final field DIAO_XIE I
|
||||
public static final field DING_GUA_GUA I
|
||||
public static final field DUI_HAO I
|
||||
public static final field E I
|
||||
public static final field FAN I
|
||||
public static final field FA_DAI I
|
||||
@ -3518,6 +3524,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field FEI_WEN I
|
||||
public static final field FEN_DOU I
|
||||
public static final field FO_XI I
|
||||
public static final field FU_LUO_BO I
|
||||
public static final field GAN_BEI I
|
||||
public static final field GAN_GA I
|
||||
public static final field GONG_XI I
|
||||
@ -3538,11 +3545,15 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field HE_XIE I
|
||||
public static final field HONG_BAO I
|
||||
public static final field HONG_BAO_BAO I
|
||||
public static final field HONG_BAO_DUO_DUO I
|
||||
public static final field HUAI_XIAO I
|
||||
public static final field HUA_CHI I
|
||||
public static final field HUA_DUO_LIAN I
|
||||
public static final field HUI_SHOU I
|
||||
public static final field HUI_TOU I
|
||||
public static final field HU_HU_SHENG_WEI I
|
||||
public static final field HU_LIAN I
|
||||
public static final field JIA_YI I
|
||||
public static final field JIA_YOU I
|
||||
public static final field JIA_YOU_BAO_BAO I
|
||||
public static final field JIA_YOU_BI_SHENG I
|
||||
@ -3551,12 +3562,14 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field JING_KONG I
|
||||
public static final field JING_LI I
|
||||
public static final field JING_XI I
|
||||
public static final field JING_XIA I
|
||||
public static final field JING_YA I
|
||||
public static final field JI_DONG I
|
||||
public static final field JI_E I
|
||||
public static final field JI_ZHANG I
|
||||
public static final field JU_HUA I
|
||||
public static final field JU_JUE I
|
||||
public static final field JU_PAI_PAI I
|
||||
public static final field KAI_QIANG I
|
||||
public static final field KA_FEI I
|
||||
public static final field KEN_TOU I
|
||||
@ -3589,6 +3602,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field MEI_GUI I
|
||||
public static final field MIAN_WU_BIAO_QING I
|
||||
public static final field MIAO_MIAO I
|
||||
public static final field MING_BAI I
|
||||
public static final field MO_GUI_XIAO I
|
||||
public static final field MO_JIN_LI I
|
||||
public static final field MO_YU I
|
||||
@ -3597,6 +3611,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field NA_DAO_HONG_BAO I
|
||||
public static final field NIU_A I
|
||||
public static final field NIU_QI_CHONG_TIAN I
|
||||
public static final field NI_ZHEN_BANG_BANG I
|
||||
public static final field NO I
|
||||
public static final field O I
|
||||
public static final field OK I
|
||||
@ -3625,12 +3640,14 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field QUAN_TOU I
|
||||
public static final field RANG_WO_KANG_KANG I
|
||||
public static final field RENG_GOU I
|
||||
public static final field RE_HUA_LE I
|
||||
public static final field SAO_RAO I
|
||||
public static final field SE I
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
public static final field SHAN_DIAN I
|
||||
public static final field SHAN_LIAN I
|
||||
public static final field SHENG_LI I
|
||||
public static final field SHENG_QI I
|
||||
public static final field SHENG_RI_KUAI_LE I
|
||||
public static final field SHI_AI I
|
||||
public static final field SHOU_QIANG I
|
||||
@ -3639,8 +3656,10 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field SHUANG_XI I
|
||||
public static final field SHUI I
|
||||
public static final field SONG_HUA I
|
||||
public static final field SUAN_Q I
|
||||
public static final field TAI_NAN_LE I
|
||||
public static final field TAI_YANG I
|
||||
public static final field TIAN_PING I
|
||||
public static final field TIAN_YI_TIAN I
|
||||
public static final field TIAO_PI I
|
||||
public static final field TIAO_SHENG I
|
||||
@ -3653,13 +3672,16 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field TUO_LIAN I
|
||||
public static final field TUO_SAI I
|
||||
public static final field WANG_WANG I
|
||||
public static final field WAN_CHENG I
|
||||
public static final field WEI_QU I
|
||||
public static final field WEI_XIAO I
|
||||
public static final field WEN_HAO_LIAN I
|
||||
public static final field WO_BU_KAN I
|
||||
public static final field WO_FANG_LE I
|
||||
public static final field WO_MEI_SHI I
|
||||
public static final field WO_SHOU I
|
||||
public static final field WO_SUAN_LE I
|
||||
public static final field WO_XIANG_KAI_LE I
|
||||
public static final field WO_ZUI_MEI I
|
||||
public static final field WU_LIAN I
|
||||
public static final field WU_LIAO I
|
||||
@ -3678,6 +3700,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field XI_GUA I
|
||||
public static final field XU I
|
||||
public static final field YANG_TUO I
|
||||
public static final field YAN_HUA I
|
||||
public static final field YAO I
|
||||
public static final field YIN_XIAN I
|
||||
public static final field YI_WEN I
|
||||
@ -3717,10 +3740,12 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field names [Ljava/lang/String;
|
||||
public static final field 不 I
|
||||
public static final field 不开心 I
|
||||
public static final field 举牌牌 I
|
||||
public static final field 乒乓 I
|
||||
public static final field 亲亲 I
|
||||
public static final field 仔细分析 I
|
||||
public static final field 佛系 I
|
||||
public static final field 你真棒棒 I
|
||||
public static final field 便便 I
|
||||
public static final field 偷看 I
|
||||
public static final field 偷笑 I
|
||||
@ -3732,6 +3757,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 凋谢 I
|
||||
public static final field 击掌 I
|
||||
public static final field 刀 I
|
||||
public static final field 加一 I
|
||||
public static final field 加油 I
|
||||
public static final field 加油必胜 I
|
||||
public static final field 加油抱抱 I
|
||||
@ -3779,6 +3805,8 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 困 I
|
||||
public static final field 坏笑 I
|
||||
public static final field 大哭 I
|
||||
public static final field 大展宏兔 I
|
||||
public static final field 大怨种 I
|
||||
public static final field 大笑 I
|
||||
public static final field 太南了 I
|
||||
public static final field 太阳 I
|
||||
@ -3790,8 +3818,10 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 好闪 I
|
||||
public static final field 委屈 I
|
||||
public static final field 嫌弃 I
|
||||
public static final field 完成 I
|
||||
public static final field 害怕 I
|
||||
public static final field 害羞 I
|
||||
public static final field 对号 I
|
||||
public static final field 小样儿 I
|
||||
public static final field 小纠结 I
|
||||
public static final field 尴尬 I
|
||||
@ -3813,18 +3843,22 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 怄火 I
|
||||
public static final field 恭喜 I
|
||||
public static final field 悠闲 I
|
||||
public static final field 惊吓 I
|
||||
public static final field 惊呆 I
|
||||
public static final field 惊喜 I
|
||||
public static final field 惊恐 I
|
||||
public static final field 惊讶 I
|
||||
public static final field 憨笑 I
|
||||
public static final field 我不看 I
|
||||
public static final field 我想开了 I
|
||||
public static final field 我方了 I
|
||||
public static final field 我最美 I
|
||||
public static final field 我没事 I
|
||||
public static final field 我酸了 I
|
||||
public static final field 扇脸 I
|
||||
public static final field 手枪 I
|
||||
public static final field 打call I
|
||||
public static final field 打招呼 I
|
||||
public static final field 打脸 I
|
||||
public static final field 扔狗 I
|
||||
public static final field 托脸 I
|
||||
@ -3863,6 +3897,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 无奈 I
|
||||
public static final field 无眼笑 I
|
||||
public static final field 无聊 I
|
||||
public static final field 明白 I
|
||||
public static final field 晕 I
|
||||
public static final field 暗中观察 I
|
||||
public static final field 暴击 I
|
||||
@ -3882,6 +3917,8 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 灯笼 I
|
||||
public static final field 炸弹 I
|
||||
public static final field 点赞 I
|
||||
public static final field 烟花 I
|
||||
public static final field 热化了 I
|
||||
public static final field 爆筋 I
|
||||
public static final field 爱你 I
|
||||
public static final field 爱心 I
|
||||
@ -3894,6 +3931,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 玫瑰 I
|
||||
public static final field 瓢虫 I
|
||||
public static final field 生日快乐 I
|
||||
public static final field 生气 I
|
||||
public static final field 甩头 I
|
||||
public static final field 疑问 I
|
||||
public static final field 白眼 I
|
||||
@ -3905,25 +3943,30 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 示爱 I
|
||||
public static final field 礼物 I
|
||||
public static final field 祈祷 I
|
||||
public static final field 福萝卜 I
|
||||
public static final field 笑哭 I
|
||||
public static final field 篮球 I
|
||||
public static final field 糊脸 I
|
||||
public static final field 糗大了 I
|
||||
public static final field 红包 I
|
||||
public static final field 红包包 I
|
||||
public static final field 红包多多 I
|
||||
public static final field 羊驼 I
|
||||
public static final field 老色痞 I
|
||||
public static final field 胖三斤 I
|
||||
public static final field 胜利 I
|
||||
public static final field 脑阔疼 I
|
||||
public static final field 舔一舔 I
|
||||
public static final field 舔屏 I
|
||||
public static final field 色 I
|
||||
public static final field 花朵脸 I
|
||||
public static final field 花痴 I
|
||||
public static final field 茶 I
|
||||
public static final field 药 I
|
||||
public static final field 菊花 I
|
||||
public static final field 菜刀 I
|
||||
public static final field 菜狗 I
|
||||
public static final field 虎虎生威 I
|
||||
public static final field 蛋 I
|
||||
public static final field 蛋糕 I
|
||||
public static final field 街舞 I
|
||||
@ -3933,6 +3976,7 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 请 I
|
||||
public static final field 调皮 I
|
||||
public static final field 谢红包 I
|
||||
public static final field 豹富 I
|
||||
public static final field 赞 I
|
||||
public static final field 足球 I
|
||||
public static final field 跳绳 I
|
||||
@ -3945,7 +3989,9 @@ public final class net/mamoe/mirai/message/data/Face : net/mamoe/mirai/message/c
|
||||
public static final field 送花 I
|
||||
public static final field 鄙视 I
|
||||
public static final field 酷 I
|
||||
public static final field 酸Q I
|
||||
public static final field 钞票 I
|
||||
public static final field 错号 I
|
||||
public static final field 闪电 I
|
||||
public static final field 闭嘴 I
|
||||
public static final field 问号脸 I
|
||||
@ -5355,6 +5401,47 @@ public final class net/mamoe/mirai/message/data/SingleMessage$Serializer : kotli
|
||||
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lnet/mamoe/mirai/message/data/SingleMessage;)V
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFace : net/mamoe/mirai/message/code/CodableMessage, net/mamoe/mirai/message/data/HummerMessage {
|
||||
public static final field Key Lnet/mamoe/mirai/message/data/SuperFace$Key;
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
public synthetic fun <init> (IILjava/lang/String;ILkotlinx/serialization/internal/SerializationConstructorMarker;)V
|
||||
public fun contentToString ()Ljava/lang/String;
|
||||
public fun equals (Ljava/lang/Object;)Z
|
||||
public static final fun from (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public static final fun fromOrNull (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public final fun getFace ()I
|
||||
public final fun getId ()Ljava/lang/String;
|
||||
public fun getKey ()Lnet/mamoe/mirai/message/data/MessageKey;
|
||||
public final fun getName ()Ljava/lang/String;
|
||||
public final fun getType ()I
|
||||
public fun hashCode ()I
|
||||
public fun toString ()Ljava/lang/String;
|
||||
public static final fun write$Self (Lnet/mamoe/mirai/message/data/SuperFace;Lkotlinx/serialization/encoding/CompositeEncoder;Lkotlinx/serialization/descriptors/SerialDescriptor;)V
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFace$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
|
||||
public static final field INSTANCE Lnet/mamoe/mirai/message/data/SuperFace$$serializer;
|
||||
public fun childSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
|
||||
public fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
|
||||
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
|
||||
public fun serialize (Lkotlinx/serialization/encoding/Encoder;Lnet/mamoe/mirai/message/data/SuperFace;)V
|
||||
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFace$Key : net/mamoe/mirai/message/data/AbstractPolymorphicMessageKey {
|
||||
public final fun from (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public final fun fromOrNull (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public final fun serializer ()Lkotlinx/serialization/KSerializer;
|
||||
}
|
||||
|
||||
public final class net/mamoe/mirai/message/data/SuperFaceKt {
|
||||
public static final synthetic fun toFace (Lnet/mamoe/mirai/message/data/SuperFace;)Lnet/mamoe/mirai/message/data/Face;
|
||||
public static final synthetic fun toSuperFace (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
public static final synthetic fun toSuperFaceOrNull (Lnet/mamoe/mirai/message/data/Face;)Lnet/mamoe/mirai/message/data/SuperFace;
|
||||
}
|
||||
|
||||
public abstract interface class net/mamoe/mirai/message/data/UnsupportedMessage : net/mamoe/mirai/message/data/MessageContent {
|
||||
public static final field Companion Lnet/mamoe/mirai/message/data/UnsupportedMessage$Companion;
|
||||
public static final field SERIAL_NAME Ljava/lang/String;
|
||||
|
@ -111,6 +111,9 @@ private object MiraiCodeParsers : AbstractMap<String, MiraiCodeParser>(), Map<St
|
||||
"face" to MiraiCodeParser(Regex("""(\d*)""")) { (id) ->
|
||||
Face(id.toInt())
|
||||
},
|
||||
"superface" to MiraiCodeParser(Regex("""(\d*),(.*),(\d*)""")) { (face, id, type) ->
|
||||
SuperFace(face.toInt(), id, type.toInt())
|
||||
},
|
||||
"image" to MiraiCodeParser(Regex("""(.*)""")) { (id) ->
|
||||
Image(id)
|
||||
},
|
||||
|
@ -566,9 +566,55 @@ public data class Face(public val id: Int) : // used in delegation
|
||||
public const val 嫌弃: Int = XIAN_QI
|
||||
public const val CHI_TANG: Int = 324
|
||||
public const val 吃糖: Int = CHI_TANG
|
||||
public const val JING_XIA: Int = 325
|
||||
public const val 惊吓: Int = JING_XIA
|
||||
public const val SHENG_QI: Int = 326
|
||||
public const val 生气: Int = SHENG_QI
|
||||
public const val JIA_YI: Int = 327
|
||||
public const val 加一: Int = JIA_YI
|
||||
public const val CUO_HAO: Int = 328
|
||||
public const val 错号: Int = CUO_HAO
|
||||
public const val DUI_HAO: Int = 329
|
||||
public const val 对号: Int = DUI_HAO
|
||||
public const val WAN_CHENG: Int = 330
|
||||
public const val 完成: Int = WAN_CHENG
|
||||
public const val MING_BAI: Int = 331
|
||||
public const val 明白: Int = MING_BAI
|
||||
public const val JU_PAI_PAI: Int = 332
|
||||
public const val 举牌牌: Int = JU_PAI_PAI
|
||||
public const val YAN_HUA: Int = 333
|
||||
public const val 烟花: Int = YAN_HUA
|
||||
public const val HU_HU_SHENG_WEI: Int = 334
|
||||
public const val 虎虎生威: Int = HU_HU_SHENG_WEI
|
||||
public const val BAO_FU: Int = 336
|
||||
public const val 豹富: Int = BAO_FU
|
||||
public const val HUA_DUO_LIAN : Int = 337
|
||||
public const val 花朵脸: Int = HUA_DUO_LIAN
|
||||
public const val WO_XIANG_KAI_LE: Int = 338
|
||||
public const val 我想开了: Int = WO_XIANG_KAI_LE
|
||||
public const val TIAN_PING : Int = 339
|
||||
public const val 舔屏: Int = TIAN_PING
|
||||
public const val RE_HUA_LE: Int = 340
|
||||
public const val 热化了: Int = RE_HUA_LE
|
||||
public const val DA_ZHAO_HU : Int = 341
|
||||
public const val 打招呼: Int = DA_ZHAO_HU
|
||||
public const val SUAN_Q: Int = 342
|
||||
public const val 酸Q: Int = SUAN_Q
|
||||
public const val WO_FANG_LE : Int = 343
|
||||
public const val 我方了: Int = WO_FANG_LE
|
||||
public const val DA_YUAN_ZHONG: Int = 344
|
||||
public const val 大怨种: Int = DA_YUAN_ZHONG
|
||||
public const val HONG_BAO_DUO_DUO: Int = 345
|
||||
public const val 红包多多: Int = HONG_BAO_DUO_DUO
|
||||
public const val NI_ZHEN_BANG_BANG: Int = 346
|
||||
public const val 你真棒棒: Int = NI_ZHEN_BANG_BANG
|
||||
public const val DA_ZHAN_HONG_TU: Int = 347
|
||||
public const val 大展宏兔: Int = DA_ZHAN_HONG_TU
|
||||
public const val FU_LUO_BO: Int = 348
|
||||
public const val 福萝卜: Int = 348
|
||||
|
||||
@JvmField
|
||||
public val names: Array<String> = Array(325) { "[表情]" }
|
||||
public val names: Array<String> = Array(349) { "[表情]" }
|
||||
|
||||
init {
|
||||
names[JING_YA] = "[惊讶]"
|
||||
@ -823,6 +869,30 @@ public data class Face(public val id: Int) : // used in delegation
|
||||
names[JU_JUE] = "[拒绝]"
|
||||
names[XIAN_QI] = "[嫌弃]"
|
||||
names[CHI_TANG] = "[吃糖]"
|
||||
names[JING_XIA] = "[惊吓]"
|
||||
names[SHENG_QI] = "[生气]"
|
||||
names[JIA_YI] = "[加一]"
|
||||
names[CUO_HAO] = "[错号]"
|
||||
names[DUI_HAO] = "[对号]"
|
||||
names[WAN_CHENG] = "[完成]"
|
||||
names[MING_BAI] = "[明白]"
|
||||
names[JU_PAI_PAI] = "[举牌牌]"
|
||||
names[YAN_HUA] = "[烟花]"
|
||||
names[YAN_HUA] = "[烟花]"
|
||||
names[HU_HU_SHENG_WEI] = "[虎虎生威]"
|
||||
names[BAO_FU] = "[豹富]"
|
||||
names[HUA_DUO_LIAN] = "[花朵脸]"
|
||||
names[WO_XIANG_KAI_LE] = "[我想开了]"
|
||||
names[TIAN_PING] = "[舔屏]"
|
||||
names[RE_HUA_LE] = "[热化了]"
|
||||
names[DA_ZHAO_HU] = "[打招呼]"
|
||||
names[SUAN_Q] = "[酸Q]"
|
||||
names[WO_FANG_LE] = "[我方了]"
|
||||
names[DA_YUAN_ZHONG] = "[大怨种]"
|
||||
names[HONG_BAO_DUO_DUO] = "[红包多多]"
|
||||
names[NI_ZHEN_BANG_BANG] = "[你真棒棒]"
|
||||
names[DA_ZHAN_HONG_TU] = "[大展宏兔]"
|
||||
names[FU_LUO_BO] = "[福萝卜]"
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2023 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.
|
||||
@ -85,6 +85,7 @@ public interface MessageMetadata : SingleMessage {
|
||||
* @see RichMessage 富文本
|
||||
* @see ServiceMessage 服务消息, 如 JSON/XML
|
||||
* @see Face 原生表情
|
||||
* @see SuperFace 超级表情
|
||||
* @see ForwardMessage 合并转发
|
||||
* @see Voice 语音
|
||||
* @see MarketFace 商城表情
|
||||
|
164
mirai-core-api/src/commonMain/kotlin/message/data/SuperFace.kt
Normal file
164
mirai-core-api/src/commonMain/kotlin/message/data/SuperFace.kt
Normal file
@ -0,0 +1,164 @@
|
||||
/*
|
||||
* Copyright 2019-2023 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/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.message.data
|
||||
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
import net.mamoe.mirai.message.code.CodableMessage
|
||||
import net.mamoe.mirai.message.data.visitor.MessageVisitor
|
||||
import net.mamoe.mirai.utils.MiraiExperimentalApi
|
||||
import net.mamoe.mirai.utils.MiraiInternalApi
|
||||
import net.mamoe.mirai.utils.NotStableForInheritance
|
||||
import net.mamoe.mirai.utils.safeCast
|
||||
|
||||
/**
|
||||
* 表示一个超级表情.
|
||||
*
|
||||
* 超级表情由[普通表情][Face]转换而来. 不是所有的普通表情都有对应的超级表情.
|
||||
*
|
||||
* 要构造超级表情, 使用 [SuperFace.from] 或 [SuperFace.fromOrNull].
|
||||
* 在 Kotlin 还可以使用对应扩展函数: [Face.toSuperFace] 或 [Face.toSuperFaceOrNull].
|
||||
*
|
||||
* @see Face
|
||||
* @since 2.16
|
||||
*/
|
||||
@OptIn(MiraiExperimentalApi::class)
|
||||
@Serializable
|
||||
@SerialName(SuperFace.SERIAL_NAME)
|
||||
@NotStableForInheritance
|
||||
public class SuperFace @MiraiInternalApi constructor(
|
||||
public val face: Int,
|
||||
public val id: String,
|
||||
@SerialName("sticker_type")
|
||||
public val type: Int
|
||||
) : HummerMessage, CodableMessage {
|
||||
|
||||
public companion object Key :
|
||||
AbstractPolymorphicMessageKey<MessageContent, SuperFace>(
|
||||
MessageContent,
|
||||
{ it.safeCast() }) {
|
||||
|
||||
public const val SERIAL_NAME: String = "SuperFace"
|
||||
|
||||
/**
|
||||
* 将普通表情转换为超级表情.
|
||||
*
|
||||
* @throws IllegalArgumentException 无法转换时抛出
|
||||
**/
|
||||
@JvmStatic
|
||||
public fun from(face: Face): SuperFace {
|
||||
return fromOrNull(face = face)
|
||||
?: throw IllegalArgumentException("No SuperFace mapping from Face(id=${face.id}, name='${face.name}')")
|
||||
}
|
||||
|
||||
/**
|
||||
* 将普通表情转换为超级表情.
|
||||
*
|
||||
* @return 无法转换时返回 null
|
||||
**/
|
||||
@JvmStatic
|
||||
@OptIn(MiraiInternalApi::class)
|
||||
public fun fromOrNull(face: Face): SuperFace? {
|
||||
val stickerId = when (face.id) {
|
||||
Face.DA_CALL -> "1"
|
||||
Face.BIAN_XING -> "2"
|
||||
Face.KE_DAO_LE -> "3"
|
||||
Face.ZI_XI_FEN_XI -> "4"
|
||||
Face.JIA_YOU -> "5"
|
||||
Face.WO_MEI_SHI -> "6"
|
||||
Face.CAI_GOU -> "7"
|
||||
Face.CHONG_BAI -> "8"
|
||||
Face.BI_XIN -> "9"
|
||||
Face.QING_ZHU -> "10"
|
||||
Face.LAO_SE_PI -> "11"
|
||||
Face.CHI_TANG -> "12"
|
||||
Face.LAN_QIU -> "13"
|
||||
Face.JING_XIA -> "14"
|
||||
Face.SHENG_QI -> "15"
|
||||
Face.LIU_LEI -> "16"
|
||||
Face.DAN_GAO -> "17"
|
||||
Face.BIAN_PAO -> "18"
|
||||
Face.YAN_HUA -> "19"
|
||||
Face.WO_XIANG_KAI_LE -> "20"
|
||||
Face.TIAN_PING -> "21"
|
||||
Face.HUA_DUO_LIAN -> "22"
|
||||
Face.RE_HUA_LE -> "23"
|
||||
Face.DA_ZHAO_HU -> "24"
|
||||
Face.NI_ZHEN_BANG_BANG -> "25"
|
||||
Face.SUAN_Q -> "26"
|
||||
Face.WO_FANG_LE -> "27"
|
||||
Face.DA_YUAN_ZHONG -> "28"
|
||||
Face.HONG_BAO_DUO_DUO -> "29"
|
||||
else -> return null
|
||||
}
|
||||
val stickerType = when (face.id) {
|
||||
Face.LAN_QIU -> 2
|
||||
else -> 1
|
||||
}
|
||||
|
||||
return SuperFace(face = face.id, id = stickerId, type = stickerType)
|
||||
}
|
||||
}
|
||||
|
||||
override val key: MessageKey<SuperFace> get() = Key
|
||||
|
||||
public val name: String get() = contentToString().let { it.substring(1, it.length - 1) }
|
||||
|
||||
override fun toString(): String = "[mirai:superface:$face,$id,$type]"
|
||||
|
||||
override fun contentToString(): String = Face.names.getOrElse(face) { "[超级表情]" }
|
||||
|
||||
@MiraiExperimentalApi
|
||||
override fun appendMiraiCodeTo(builder: StringBuilder) {
|
||||
builder.append("[mirai:superface:").append(face).append(',').append(id).append(',').append(type).append(']')
|
||||
}
|
||||
|
||||
@MiraiInternalApi
|
||||
override fun <D, R> accept(visitor: MessageVisitor<D, R>, data: D): R {
|
||||
return visitor.visitSuperFace(this, data)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
var result = face.hashCode()
|
||||
result = 31 * result + id.hashCode()
|
||||
result = 31 * result + type.hashCode()
|
||||
return result
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (other !is SuperFace) return false
|
||||
return face == other.face && id == other.id && type == other.type
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将超级表情转换为普通表情
|
||||
*
|
||||
* @since 2.16
|
||||
*/
|
||||
@JvmSynthetic
|
||||
public fun SuperFace.toFace(): Face = Face(id = face)
|
||||
|
||||
/**
|
||||
* 将普通表情转换为超级表情
|
||||
*
|
||||
* @since 2.16
|
||||
* @throws IllegalArgumentException 无法转换时抛出
|
||||
*/
|
||||
@JvmSynthetic
|
||||
public fun Face.toSuperFace(): SuperFace = SuperFace.from(this)
|
||||
|
||||
/**
|
||||
* 将普通表情转换为超级表情, 在无法转换时返回 `null`
|
||||
*
|
||||
* @since 2.16
|
||||
*/
|
||||
@JvmSynthetic
|
||||
public fun Face.toSuperFaceOrNull(): SuperFace? = SuperFace.fromOrNull(this)
|
@ -48,6 +48,7 @@ public interface MessageVisitor<in D, out R> {
|
||||
public fun visitFlashImage(message: FlashImage, data: D): R
|
||||
public fun visitPokeMessage(message: PokeMessage, data: D): R
|
||||
public fun visitVipFace(message: VipFace, data: D): R
|
||||
public fun visitSuperFace(message: SuperFace, data: D): R
|
||||
|
||||
// region MarketFace
|
||||
public fun visitMarketFace(message: MarketFace, data: D): R
|
||||
@ -186,6 +187,10 @@ public abstract class AbstractMessageVisitor<in D, out R> : MessageVisitor<D, R>
|
||||
return visitHummerMessage(message, data)
|
||||
}
|
||||
|
||||
override fun visitSuperFace(message: SuperFace, data: D): R {
|
||||
return visitHummerMessage(message, data)
|
||||
}
|
||||
|
||||
public override fun visitMarketFace(message: MarketFace, data: D): R {
|
||||
return visitHummerMessage(message, data)
|
||||
}
|
||||
|
@ -115,6 +115,10 @@ internal class MessageVisitorTest {
|
||||
return arrayOf("visitFace") + super.visitFace(message, data)
|
||||
}
|
||||
|
||||
override fun visitSuperFace(message: SuperFace, data: Unit): Array<String> {
|
||||
return arrayOf("visitSuperFace") + super.visitSuperFace(message, data)
|
||||
}
|
||||
|
||||
override fun visitFileMessage(message: FileMessage, data: Unit): Array<String> {
|
||||
return arrayOf("visitFileMessage") + super.visitFileMessage(message, data)
|
||||
}
|
||||
@ -290,6 +294,17 @@ internal class MessageVisitorTest {
|
||||
FlashImage(createImage()).accept(GetCalledMethodNames)
|
||||
)
|
||||
|
||||
assertContentEquals(
|
||||
arrayOf(
|
||||
"visitSuperFace",
|
||||
"visitHummerMessage",
|
||||
"visitMessageContent",
|
||||
"visitSingleMessage",
|
||||
"visitMessage",
|
||||
),
|
||||
SuperFace.from(Face(Face.DA_CALL)).accept(GetCalledMethodNames)
|
||||
)
|
||||
|
||||
assertContentEquals(
|
||||
arrayOf(
|
||||
"visitPokeMessage",
|
||||
|
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright 2019-2023 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/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.internal.message.protocol.impl
|
||||
|
||||
import net.mamoe.mirai.internal.message.protocol.MessageProtocol
|
||||
import net.mamoe.mirai.internal.message.protocol.ProcessorCollector
|
||||
import net.mamoe.mirai.internal.message.protocol.decode.MessageDecoder
|
||||
import net.mamoe.mirai.internal.message.protocol.decode.MessageDecoderContext
|
||||
import net.mamoe.mirai.internal.message.protocol.encode.MessageEncoder
|
||||
import net.mamoe.mirai.internal.message.protocol.encode.MessageEncoderContext
|
||||
import net.mamoe.mirai.internal.message.protocol.encode.MessageEncoderContext.Companion.collectGeneralFlags
|
||||
import net.mamoe.mirai.internal.message.protocol.serialization.MessageSerializer
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.HummerCommelem
|
||||
import net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.toByteArray
|
||||
import net.mamoe.mirai.message.data.*
|
||||
import kotlin.text.toByteArray
|
||||
|
||||
internal class SuperFaceProtocol : MessageProtocol() {
|
||||
override fun ProcessorCollector.collectProcessorsImpl() {
|
||||
add(Decoder())
|
||||
add(Encoder())
|
||||
|
||||
MessageSerializer.superclassesScope(MessageContent::class, SingleMessage::class) {
|
||||
add(MessageSerializer(SuperFace::class, SuperFace.serializer()))
|
||||
}
|
||||
}
|
||||
|
||||
private class Decoder : MessageDecoder {
|
||||
override suspend fun MessageDecoderContext.process(data: ImMsgBody.Elem) {
|
||||
if (data.commonElem == null) return
|
||||
if (data.commonElem.serviceType != 37) return
|
||||
|
||||
markAsConsumed()
|
||||
|
||||
val proto = data.commonElem.pbElem.loadAs(HummerCommelem.MsgElemInfoServtype37.serializer())
|
||||
collect(SuperFace(face = proto.qsId, id = proto.stickerId.decodeToString(), type = proto.stickerType))
|
||||
}
|
||||
}
|
||||
|
||||
private class Encoder : MessageEncoder<SuperFace> {
|
||||
override suspend fun MessageEncoderContext.process(data: SuperFace) {
|
||||
markAsConsumed()
|
||||
|
||||
collect(ImMsgBody.Elem(commonElem = data.toCommData()))
|
||||
processAlso(PlainText("/${data.name}"))
|
||||
collectGeneralFlags {
|
||||
ImMsgBody.Elem(
|
||||
generalFlags = ImMsgBody.GeneralFlags(
|
||||
pbReserve = ImMsgBody.Text(str = "[${data.name}]请使用最新版手机QQ体验新功能")
|
||||
.toByteArray(ImMsgBody.Text.serializer())
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun SuperFace.toCommData(): ImMsgBody.CommonElem {
|
||||
return ImMsgBody.CommonElem(
|
||||
serviceType = 37,
|
||||
pbElem = HummerCommelem.MsgElemInfoServtype37(
|
||||
packId = "1".encodeToByteArray(),
|
||||
stickerId = id.encodeToByteArray(),
|
||||
qsId = face,
|
||||
sourceType = 1,
|
||||
stickerType = type,
|
||||
text = "/${name}".toByteArray(),
|
||||
randomType = 1
|
||||
).toByteArray(HummerCommelem.MsgElemInfoServtype37.serializer()),
|
||||
businessType = type
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2023 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.
|
||||
@ -242,6 +242,19 @@ internal class HummerCommelem : ProtoBuf {
|
||||
@ProtoNumber(4) @JvmField val buf: ByteArray = EMPTY_BYTE_ARRAY
|
||||
) : ProtoBuf
|
||||
|
||||
@Serializable
|
||||
internal class MsgElemInfoServtype37(
|
||||
@ProtoNumber(1) @JvmField val packId: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@ProtoNumber(2) @JvmField val stickerId: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@ProtoNumber(3) @JvmField val qsId: Int = 0,
|
||||
@ProtoNumber(4) @JvmField val sourceType: Int = 0,
|
||||
@ProtoNumber(5) @JvmField val stickerType: Int = 0,
|
||||
@ProtoNumber(6) @JvmField val resultId: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@ProtoNumber(7) @JvmField val text: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@ProtoNumber(8) @JvmField val surpriseId: ByteArray = EMPTY_BYTE_ARRAY,
|
||||
@ProtoNumber(9) @JvmField val randomType: Int = 0
|
||||
) : ProtoBuf
|
||||
|
||||
@Serializable
|
||||
internal class MsgElemInfoServtype4(
|
||||
@ProtoNumber(1) @JvmField val imsgType: Int = 0,
|
||||
|
@ -61,6 +61,10 @@ internal object MiraiCoreServices {
|
||||
msgProtocol,
|
||||
"net.mamoe.mirai.internal.message.protocol.impl.MarketFaceProtocol"
|
||||
) { net.mamoe.mirai.internal.message.protocol.impl.MarketFaceProtocol() }
|
||||
Services.register(
|
||||
msgProtocol,
|
||||
"net.mamoe.mirai.internal.message.protocol.impl.SuperFaceProtocol"
|
||||
) { net.mamoe.mirai.internal.message.protocol.impl.SuperFaceProtocol() }
|
||||
Services.register(
|
||||
msgProtocol,
|
||||
"net.mamoe.mirai.internal.message.protocol.impl.MusicShareProtocol"
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
# Copyright 2019-2023 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.
|
||||
@ -15,6 +15,7 @@ net.mamoe.mirai.internal.message.protocol.impl.FlashImageProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.IgnoredMessagesProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.ImageProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.MarketFaceProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.SuperFaceProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.MusicShareProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.PokeMessageProtocol
|
||||
net.mamoe.mirai.internal.message.protocol.impl.PttMessageProtocol
|
||||
|
@ -95,5 +95,10 @@ internal class TestMiraiCode : AbstractTest() {
|
||||
messageChainOf(RockPaperScissors.PAPER),
|
||||
"[mirai:rps:paper]".deserializeMiraiCode()
|
||||
)
|
||||
|
||||
assertEquals(
|
||||
messageChainOf(SuperFace.from(Face(Face.LAN_QIU))),
|
||||
"[mirai:superface:114,13,2]".deserializeMiraiCode()
|
||||
)
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2019-2022 Mamoe Technologies and contributors.
|
||||
* Copyright 2019-2023 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.
|
||||
@ -28,6 +28,7 @@ internal class MessageProtocolFacadeTest : AbstractTest() {
|
||||
FlashImageProtocol
|
||||
ImageProtocol
|
||||
MarketFaceProtocol
|
||||
SuperFaceProtocol
|
||||
MusicShareProtocol
|
||||
PokeMessageProtocol
|
||||
PttMessageProtocol
|
||||
|
@ -0,0 +1,62 @@
|
||||
/*
|
||||
* Copyright 2019-2023 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/dev/LICENSE
|
||||
*/
|
||||
|
||||
package net.mamoe.mirai.internal.message.protocol.impl
|
||||
|
||||
import net.mamoe.mirai.contact.MemberPermission
|
||||
import net.mamoe.mirai.internal.message.protocol.MessageProtocol
|
||||
import net.mamoe.mirai.internal.testFramework.DynamicTestsResult
|
||||
import net.mamoe.mirai.internal.testFramework.TestFactory
|
||||
import net.mamoe.mirai.internal.testFramework.runDynamicTests
|
||||
import net.mamoe.mirai.internal.utils.io.serialization.loadAs
|
||||
import net.mamoe.mirai.message.data.Face
|
||||
import net.mamoe.mirai.message.data.SuperFace
|
||||
import net.mamoe.mirai.utils.hexToBytes
|
||||
import kotlin.test.BeforeTest
|
||||
import kotlin.test.Test
|
||||
|
||||
internal class SuperFaceProtocolTest : AbstractMessageProtocolTest() {
|
||||
override val protocols: Array<out MessageProtocol> = arrayOf(SuperFaceProtocol(), TextProtocol())
|
||||
|
||||
@BeforeTest
|
||||
fun `init group`() {
|
||||
defaultTarget = bot.addGroup(123, 1230003).apply {
|
||||
addMember(1230003, "user3", MemberPermission.OWNER)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `group AnimatedSticker receive from Android client`() {
|
||||
buildCodingChecks {
|
||||
elem(
|
||||
"AA 03 20 08 25 12 1A 0A 01 31 12 02 31 36 18 05 20 01 28 01 32 00 3A 07 2F E6 B5 81 E6 B3 AA 48 01 18 01".hexToBytes()
|
||||
.loadAs(net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody.Elem.serializer())
|
||||
)
|
||||
elem(
|
||||
"AA 03 23 08 25 12 1D 0A 01 31 12 02 31 33 18 72 20 01 28 02 32 01 35 3A 07 2F E7 AF AE E7 90 83 42 00 48 01 18 02".hexToBytes()
|
||||
.loadAs(net.mamoe.mirai.internal.network.protocol.data.proto.ImMsgBody.Elem.serializer())
|
||||
)
|
||||
message(
|
||||
SuperFace.from(Face(Face.LAN_QIU))
|
||||
)
|
||||
}.doDecoderChecks()
|
||||
}
|
||||
|
||||
@TestFactory
|
||||
fun `test serialization`(): DynamicTestsResult {
|
||||
val data = SuperFace.from(Face(Face.LAN_QIU))
|
||||
val serialName = SuperFace.SERIAL_NAME
|
||||
return runDynamicTests(
|
||||
testPolymorphicInMessageContent(data, serialName),
|
||||
testPolymorphicInSingleMessage(data, serialName),
|
||||
testInsideMessageChain(data, serialName),
|
||||
testContextual(data, serialName),
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user