diff --git a/Lagrange.Core/Lagrange.Core/Common/BotAppInfo.cs b/Lagrange.Core/Lagrange.Core/Common/BotAppInfo.cs index 22d48ea..88d2886 100644 --- a/Lagrange.Core/Lagrange.Core/Common/BotAppInfo.cs +++ b/Lagrange.Core/Lagrange.Core/Common/BotAppInfo.cs @@ -42,17 +42,17 @@ public class BotAppInfo Os = "Linux", Kernel = "Linux", VendorOs = "linux", - CurrentVersion = "3.2.15-30366", + CurrentVersion = "3.2.19-39038", MiscBitmap = 32764, PtVersion = "2.0.0", SsoVersion = 19, PackageName = "com.tencent.qq", WtLoginSdk = "nt.wtlogin.0.0.1", AppId = 1600001615, - SubAppId = 537258424, - AppIdQrCode = 13697054, - AppClientVersion = 30366, - + SubAppId = 537313942, + AppIdQrCode = 537313942, + AppClientVersion = 39038, + MainSigMap = 169742560, SubSigMap = 0, NTLoginType = 1 diff --git a/Lagrange.Core/Lagrange.Core/Internal/Context/Logic/Implementation/MessagingLogic.cs b/Lagrange.Core/Lagrange.Core/Internal/Context/Logic/Implementation/MessagingLogic.cs index 34e0ded..9bcac78 100644 --- a/Lagrange.Core/Lagrange.Core/Internal/Context/Logic/Implementation/MessagingLogic.cs +++ b/Lagrange.Core/Lagrange.Core/Internal/Context/Logic/Implementation/MessagingLogic.cs @@ -71,13 +71,16 @@ internal class MessagingLogic : LogicBase var chain = push.Chain; // Intercept group invitation - if (chain.Count == 1 && chain[0] is LightAppEntity { AppName: "com.tencent.qun.invite" } app) + if (chain.Count == 1 && chain[0] is LightAppEntity + { + AppName: "com.tencent.qun.invite" or "com.tencent.tuwen.lua" + } app) { using var document = JsonDocument.Parse(app.Payload); var root = document.RootElement; string url = root.GetProperty("meta").GetProperty("news").GetProperty("jumpUrl").GetString() - ?? throw new Exception("sb tx! Is this 'com.tencent.qun.invite'?"); + ?? throw new Exception("sb tx! Is this 'com.tencent.qun.invite' or 'com.tencent.tuwen.lua'?"); var query = HttpUtility.ParseQueryString(new Uri(url).Query); uint groupUin = uint.Parse(query["groupcode"] ?? throw new Exception("sb tx! Is this '/group/invite_join'?")); diff --git a/Lagrange.Core/Lagrange.Core/Message/Entity/ForwardEntity.cs b/Lagrange.Core/Lagrange.Core/Message/Entity/ForwardEntity.cs index d75eb07..1e22151 100644 --- a/Lagrange.Core/Lagrange.Core/Message/Entity/ForwardEntity.cs +++ b/Lagrange.Core/Lagrange.Core/Message/Entity/ForwardEntity.cs @@ -85,29 +85,40 @@ public class ForwardEntity : IMessageEntity { if (elem.SrcMsg is not { } src) return null; - var reserve = Serializer.Deserialize(src.PbReserve.AsSpan()); - return new ForwardEntity(MessagePacker.Parse(new PushMsgBody + if (src.SourceMsg != null) { - ResponseHead = new ResponseHead - { - FromUin = (uint)src.SenderUin, - FromUid = reserve.SenderUid, - Grp = reserve.ReceiverUid != null ? null : new ResponseGrp { } - }, - ContentHead = new ContentHead - { - Random = (long?)(reserve.MessageId & 0xFFFFFFFF), - Sequence = src.OrigSeqs?.Count > 0 ? src.OrigSeqs[0] : 0, - Timestamp = src.Time, - }, - Body = new MessageBody + var chain = MessagePacker.Parse(Serializer.Deserialize(src.SourceMsg.AsSpan()), true); + return new ForwardEntity(chain); + } + + if (src.PbReserve != null) + { + var reserve = Serializer.Deserialize(src.PbReserve.AsSpan()); + return new ForwardEntity(MessagePacker.Parse(new PushMsgBody { - RichText = new RichText + ResponseHead = new ResponseHead + { + FromUin = (uint)src.SenderUin, + FromUid = reserve.SenderUid, + Grp = reserve.ReceiverUid != null ? null : new ResponseGrp { } + }, + ContentHead = new ContentHead + { + Random = (long?)(reserve.MessageId & 0xFFFFFFFF), + Sequence = (src.OrigSeqs != null && src.OrigSeqs.Count > 0) ? src.OrigSeqs[0] : 0, + Timestamp = src.Time, + }, + Body = new MessageBody { - Elems = src.Elems ?? new List(), + RichText = new RichText + { + Elems = src.Elems ?? new List(), + } } - } - }, true)); + }, 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; diff --git a/Lagrange.Core/Lagrange.Core/Utility/Sign/LinuxSigner.cs b/Lagrange.Core/Lagrange.Core/Utility/Sign/LinuxSigner.cs index b764be9..ae0dd9a 100644 --- a/Lagrange.Core/Lagrange.Core/Utility/Sign/LinuxSigner.cs +++ b/Lagrange.Core/Lagrange.Core/Utility/Sign/LinuxSigner.cs @@ -2,5 +2,5 @@ namespace Lagrange.Core.Utility.Sign; internal class LinuxSigner : UrlSigner { - public LinuxSigner() : base("https://sign.lagrangecore.org/api/sign/30366") { } + public LinuxSigner() : base("https://sign.lagrangecore.org/api/sign/39038") { } } \ No newline at end of file