@@ -85,29 +85,40 @@ IEnumerable<Elem> PackElement(bool fake)
85
85
{
86
86
if ( elem . SrcMsg is not { } src ) return null ;
87
87
88
- var reserve = Serializer . Deserialize < SrcMsg . Preserve > ( src . PbReserve . AsSpan ( ) ) ;
89
- return new ForwardEntity ( MessagePacker . Parse ( new PushMsgBody
88
+ if ( src . SourceMsg != null )
90
89
{
91
- ResponseHead = new ResponseHead
92
- {
93
- FromUin = ( uint ) src . SenderUin ,
94
- FromUid = reserve . SenderUid ,
95
- Grp = reserve . ReceiverUid != null ? null : new ResponseGrp { }
96
- } ,
97
- ContentHead = new ContentHead
98
- {
99
- Random = ( long ? ) ( reserve . MessageId & 0xFFFFFFFF ) ,
100
- Sequence = src . OrigSeqs ? . Count > 0 ? src . OrigSeqs [ 0 ] : 0 ,
101
- Timestamp = src . Time ,
102
- } ,
103
- Body = new MessageBody
90
+ var chain = MessagePacker . Parse ( Serializer . Deserialize < PushMsgBody > ( src . SourceMsg . AsSpan ( ) ) , true ) ;
91
+ return new ForwardEntity ( chain ) ;
92
+ }
93
+
94
+ if ( src . PbReserve != null )
95
+ {
96
+ var reserve = Serializer . Deserialize < SrcMsg . Preserve > ( src . PbReserve . AsSpan ( ) ) ;
97
+ return new ForwardEntity ( MessagePacker . Parse ( new PushMsgBody
104
98
{
105
- RichText = new RichText
99
+ ResponseHead = new ResponseHead
100
+ {
101
+ FromUin = ( uint ) src . SenderUin ,
102
+ FromUid = reserve . SenderUid ,
103
+ Grp = reserve . ReceiverUid != null ? null : new ResponseGrp { }
104
+ } ,
105
+ ContentHead = new ContentHead
106
+ {
107
+ Random = ( long ? ) ( reserve . MessageId & 0xFFFFFFFF ) ,
108
+ Sequence = ( src . OrigSeqs != null && src . OrigSeqs . Count > 0 ) ? src . OrigSeqs [ 0 ] : 0 ,
109
+ Timestamp = src . Time ,
110
+ } ,
111
+ Body = new MessageBody
106
112
{
107
- Elems = src . Elems ?? new List < Elem > ( ) ,
113
+ RichText = new RichText
114
+ {
115
+ Elems = src . Elems ?? new List < Elem > ( ) ,
116
+ }
108
117
}
109
- }
110
- } , true ) ) ;
118
+ } , true ) ) ;
119
+ }
120
+
121
+ return new ForwardEntity ( new MessageChain ( 0 , 0 , ( src . OrigSeqs != null && src . OrigSeqs . Count > 0 ? src . OrigSeqs [ 0 ] : 0 ) , 0 ) ) ;
111
122
}
112
123
113
124
void IMessageEntity . SetSelfUid ( string selfUid ) => _selfUid = selfUid ;
0 commit comments