diff --git a/Lagrange.Core/Internal/Service/Message/PushMessageService.cs b/Lagrange.Core/Internal/Service/Message/PushMessageService.cs index baea5c2aa..0c28affda 100644 --- a/Lagrange.Core/Internal/Service/Message/PushMessageService.cs +++ b/Lagrange.Core/Internal/Service/Message/PushMessageService.cs @@ -329,6 +329,11 @@ private static void ProcessEvent0x210(Span payload, PushMsg msg, List PackElement(bool additional) void IMessageEntity.SetSelfUid(string selfUid) => _selfUid = selfUid; - string IMessageEntity.ToPreviewString() => $"[Forward] {{ {Chain.ToPreviewString()} }}"; + string IMessageEntity.ToPreviewString() => $"[Forward] {{ {Chain.Sequence} }}"; string IMessageEntity.ToPreviewText() => ""; } diff --git a/Lagrange.Core/Message/Filter/MessageFilter.cs b/Lagrange.Core/Message/Filter/MessageFilter.cs index e5ea5d204..0ef275b36 100644 --- a/Lagrange.Core/Message/Filter/MessageFilter.cs +++ b/Lagrange.Core/Message/Filter/MessageFilter.cs @@ -16,6 +16,7 @@ internal static class MessageFilter static MessageFilter() { _rules = new IMessageFilterRule[] { + new AtBeforeForwardInOldClient(), new ForwardTrailingAtAndTextFilterRule(), new MultiMsgTrailingXmlFilterRule(), new OldAndInvalidImageFilterRule(), diff --git a/Lagrange.Core/Message/Filter/Rule/AtBeforeForwardInOldClient.cs b/Lagrange.Core/Message/Filter/Rule/AtBeforeForwardInOldClient.cs new file mode 100644 index 000000000..458c48f9f --- /dev/null +++ b/Lagrange.Core/Message/Filter/Rule/AtBeforeForwardInOldClient.cs @@ -0,0 +1,18 @@ + +using Lagrange.Core.Message.Entity; + +namespace Lagrange.Core.Message.Filter.Rule; + +public class AtBeforeForwardInOldClient : IMessageFilterRule +{ + public IEnumerable Apply(MessageChain chain) + { + if (chain.Count < 3) return Array.Empty(); + if (chain[0] is not MentionEntity mention) return Array.Empty(); + if (chain[1] is not TextEntity { Text: " " }) return Array.Empty(); + if (chain[2] is not ForwardEntity forward) return Array.Empty(); + if (mention.Uin != forward.TargetUin) return Array.Empty(); + + return new int[] { 0, 1 }; + } +} \ No newline at end of file