|
|
|
|
@ -85,6 +85,14 @@ public class ForwardEntity : IMessageEntity
|
|
|
|
|
{
|
|
|
|
|
if (elem.SrcMsg is not { } src) return null;
|
|
|
|
|
|
|
|
|
|
if (src.SourceMsg != null)
|
|
|
|
|
{
|
|
|
|
|
var chain = MessagePacker.Parse(Serializer.Deserialize<PushMsgBody>(src.SourceMsg.AsSpan()), true);
|
|
|
|
|
return new ForwardEntity(chain);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (src.PbReserve != null)
|
|
|
|
|
{
|
|
|
|
|
var reserve = Serializer.Deserialize<SrcMsg.Preserve>(src.PbReserve.AsSpan());
|
|
|
|
|
return new ForwardEntity(MessagePacker.Parse(new PushMsgBody
|
|
|
|
|
{
|
|
|
|
|
@ -97,7 +105,7 @@ public class ForwardEntity : IMessageEntity
|
|
|
|
|
ContentHead = new ContentHead
|
|
|
|
|
{
|
|
|
|
|
Random = (long?)(reserve.MessageId & 0xFFFFFFFF),
|
|
|
|
|
Sequence = src.OrigSeqs?.Count > 0 ? src.OrigSeqs[0] : 0,
|
|
|
|
|
Sequence = (src.OrigSeqs != null && src.OrigSeqs.Count > 0) ? src.OrigSeqs[0] : 0,
|
|
|
|
|
Timestamp = src.Time,
|
|
|
|
|
},
|
|
|
|
|
Body = new MessageBody
|
|
|
|
|
@ -110,6 +118,9 @@ public class ForwardEntity : IMessageEntity
|
|
|
|
|
}, true));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new ForwardEntity(new MessageChain(0, 0, (src.OrigSeqs != null && src.OrigSeqs.Count > 0 ? src.OrigSeqs[0] : 0), 0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void IMessageEntity.SetSelfUid(string selfUid) => _selfUid = selfUid;
|
|
|
|
|
|
|
|
|
|
string IMessageEntity.ToPreviewString() => $"[Forward] {{ {Chain.Sequence} }}";
|
|
|
|
|
|