Skip to content

Commit 8ba45e4

Browse files
DarkRRbCopilot
andauthored
[Core] Fix MessageChain parsing error in ForwardEntity (#856)
* [All] Fix MessageChain parsing error in ForwardEntity * Update Lagrange.Core/Message/Entity/ForwardEntity.cs Co-authored-by: Copilot <[email protected]> * Update Lagrange.Core/Message/Entity/ForwardEntity.cs Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]>
1 parent 0213909 commit 8ba45e4

File tree

1 file changed

+30
-19
lines changed

1 file changed

+30
-19
lines changed

Lagrange.Core/Message/Entity/ForwardEntity.cs

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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 != null && src.OrigSeqs.Count > 0) ? 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 != null && src.OrigSeqs.Count > 0 ? src.OrigSeqs[0] : 0), 0));
111122
}
112123

113124
void IMessageEntity.SetSelfUid(string selfUid) => _selfUid = selfUid;

0 commit comments

Comments
 (0)