Skip to content
This repository was archived by the owner on Oct 12, 2025. It is now read-only.

Commit ddfda36

Browse files
authored
[Core] fix forward sent by the old client is preceded by extra elements (#835)
1 parent 7a108da commit ddfda36

File tree

4 files changed

+26
-1
lines changed

4 files changed

+26
-1
lines changed

Lagrange.Core/Internal/Service/Message/PushMessageService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,11 @@ private static void ProcessEvent0x210(Span<byte> payload, PushMsg msg, List<Prot
329329
}
330330
break;
331331
}
332+
case Event0x210SubType.FriendRecallPoke:
333+
{
334+
// 0AC6010A40088BF5FDC7041218755F37787A33324D66583368634D6A737573337742706D6728E2FBEDF9053218755F667132684B3132624267306F7735637A57685A667267122508900410C10218C10220C1AFAD9F0128B9DAE0A101309DA4A3C10660C1AFAD9F81808080021A5B0A0012570A18755F37787A33324D66583368634D6A737573337742706D6720A5082889A3C9FC041218755F667132684B3132624267306F7735637A57685A6672671A18755F37787A33324D66583368634D6A737573337742706D67180122360A0E33302E3138382E3234372E32333310FE9D011A2010900418B9DAE0A10120C1AFAD9F818080800230C1023801408BF5FDC7044801
335+
break;
336+
}
332337
default:
333338
{
334339
break;
@@ -382,5 +387,6 @@ private enum Event0x210SubType
382387
ServicePinChanged = 199, // e.g: My computer | QQ Wallet | ...
383388
FriendPokeNotice = 290,
384389
GroupKickNotice = 212,
390+
FriendRecallPoke = 321,
385391
}
386392
}

Lagrange.Core/Message/Entity/ForwardEntity.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ IEnumerable<Elem> PackElement(bool additional)
113113

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

116-
string IMessageEntity.ToPreviewString() => $"[Forward] {{ {Chain.ToPreviewString()} }}";
116+
string IMessageEntity.ToPreviewString() => $"[Forward] {{ {Chain.Sequence} }}";
117117

118118
string IMessageEntity.ToPreviewText() => "";
119119
}

Lagrange.Core/Message/Filter/MessageFilter.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ internal static class MessageFilter
1616
static MessageFilter()
1717
{
1818
_rules = new IMessageFilterRule[] {
19+
new AtBeforeForwardInOldClient(),
1920
new ForwardTrailingAtAndTextFilterRule(),
2021
new MultiMsgTrailingXmlFilterRule(),
2122
new OldAndInvalidImageFilterRule(),
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
using Lagrange.Core.Message.Entity;
3+
4+
namespace Lagrange.Core.Message.Filter.Rule;
5+
6+
public class AtBeforeForwardInOldClient : IMessageFilterRule
7+
{
8+
public IEnumerable<int> Apply(MessageChain chain)
9+
{
10+
if (chain.Count < 3) return Array.Empty<int>();
11+
if (chain[0] is not MentionEntity mention) return Array.Empty<int>();
12+
if (chain[1] is not TextEntity { Text: " " }) return Array.Empty<int>();
13+
if (chain[2] is not ForwardEntity forward) return Array.Empty<int>();
14+
if (mention.Uin != forward.TargetUin) return Array.Empty<int>();
15+
16+
return new int[] { 0, 1 };
17+
}
18+
}

0 commit comments

Comments
 (0)