@@ -85,29 +85,40 @@ IEnumerable<Elem> PackElement(bool fake)
8585 {
8686 if ( elem . SrcMsg is not { } src ) return null ;
8787
88- var reserve = Serializer . Deserialize < SrcMsg . Preserve > ( src . PbReserve . AsSpan ( ) ) ;
89- return new ForwardEntity ( MessagePacker . Parse ( new PushMsgBody
88+ if ( src . SourceMsg != null )
9089 {
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
10498 {
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 ? [ 0 ] ?? 0 ,
109+ Timestamp = src . Time ,
110+ } ,
111+ Body = new MessageBody
106112 {
107- Elems = src . Elems ?? new List < Elem > ( ) ,
113+ RichText = new RichText
114+ {
115+ Elems = src . Elems ?? new List < Elem > ( ) ,
116+ }
108117 }
109- }
110- } , true ) ) ;
118+ } , true ) ) ;
119+ }
120+
121+ return new ForwardEntity ( new MessageChain ( 0 , 0 , src . OrigSeqs ? [ 0 ] ?? 0 , 0 ) ) ;
111122 }
112123
113124 void IMessageEntity . SetSelfUid ( string selfUid ) => _selfUid = selfUid ;
0 commit comments