From 5ea82a0af56b1af1c1e92acda71acbe846d4521f Mon Sep 17 00:00:00 2001 From: Huang Youzhen Date: Mon, 28 Jul 2025 02:28:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?[NativeAPI]=20=E4=BF=AE=E5=A4=8D=20BotKeyst?= =?UTF-8?q?ore=20=E4=BC=A0=E9=80=92=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lagrange.Core.NativeAPI/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lagrange.Core.NativeAPI/Program.cs b/Lagrange.Core.NativeAPI/Program.cs index 08153242..269667c7 100644 --- a/Lagrange.Core.NativeAPI/Program.cs +++ b/Lagrange.Core.NativeAPI/Program.cs @@ -19,7 +19,7 @@ public static int Initialize(IntPtr botConfigPtr, IntPtr keystorePtr) if (keystorePtr != IntPtr.Zero) { var keystoreStruct = Marshal.PtrToStructure(keystorePtr); - var keystore = keystoreStruct; + var keystore = keystoreStruct.ToKeystoreWithoutFree(); Contexts.Add(new Context(BotFactory.Create(botConfig, keystore))); } else From 1b556a49026387b10c618b564a302c8081e0b3c5 Mon Sep 17 00:00:00 2001 From: Huang Youzhen Date: Tue, 29 Jul 2025 21:42:09 +0800 Subject: [PATCH 2/3] [NativeAPI] Fix Reply Enitity incorrect Initialization --- .../Message/Entity/ReplyEntityStruct.cs | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Lagrange.Core.NativeAPI/NativeModel/Message/Entity/ReplyEntityStruct.cs b/Lagrange.Core.NativeAPI/NativeModel/Message/Entity/ReplyEntityStruct.cs index d3ac2734..bef982be 100644 --- a/Lagrange.Core.NativeAPI/NativeModel/Message/Entity/ReplyEntityStruct.cs +++ b/Lagrange.Core.NativeAPI/NativeModel/Message/Entity/ReplyEntityStruct.cs @@ -10,13 +10,13 @@ public struct ReplyEntityStruct public ReplyEntityStruct() { } public ulong SrcUid; - + public int SrcSequence; - + public IntPtr Source; public int SourceType; - + public static implicit operator ReplyEntityStruct(ReplyEntity entity) { var type = entity.Source switch @@ -26,15 +26,25 @@ public static implicit operator ReplyEntityStruct(ReplyEntity entity) BotStranger => 3, _ => 0 }; - + var sourcePtr = type switch { - 1 => Marshal.AllocHGlobal(Marshal.SizeOf()), - 2 => Marshal.AllocHGlobal(Marshal.SizeOf()), - 3 => Marshal.AllocHGlobal(Marshal.SizeOf()), + 1 => Marshal.AllocHGlobal(Marshal.SizeOf()), + 2 => Marshal.AllocHGlobal(Marshal.SizeOf()), + 3 => Marshal.AllocHGlobal(Marshal.SizeOf()), _ => IntPtr.Zero }; - + + if (entity.Source != null && sourcePtr != 0) + { + switch (type) + { + case 1: Marshal.StructureToPtr((BotFriendStruct)(BotFriend)entity.Source, sourcePtr, false); break; + case 2: Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)entity.Source, sourcePtr, false); break; + case 3: Marshal.StructureToPtr((BotStrangerStruct)(BotStranger)entity.Source, sourcePtr, false); break; + } + } + return new ReplyEntityStruct { SrcUid = entity.SrcUid, From 4f96fe02a104d4eb2ea276336aebd5b54a70edcb Mon Sep 17 00:00:00 2001 From: Huang Youzhen Date: Sat, 2 Aug 2025 13:14:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?[NativeAPI]=20=E4=BF=AE=E5=A4=8D=E8=B0=83?= =?UTF-8?q?=E7=94=A8=20SendGroupMessage=20=E6=96=B9=E6=B3=95=E6=97=B6?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E6=B6=88=E6=81=AF=E7=BB=93=E6=9E=84=E4=BD=93?= =?UTF-8?q?=E6=9E=84=E9=80=A0=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NativeModel/Message/BotMessageStruct.cs | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/Lagrange.Core.NativeAPI/NativeModel/Message/BotMessageStruct.cs b/Lagrange.Core.NativeAPI/NativeModel/Message/BotMessageStruct.cs index 83846e4e..135acacb 100644 --- a/Lagrange.Core.NativeAPI/NativeModel/Message/BotMessageStruct.cs +++ b/Lagrange.Core.NativeAPI/NativeModel/Message/BotMessageStruct.cs @@ -1,4 +1,4 @@ -using System.Runtime.InteropServices; +using System.Runtime.InteropServices; using System.Text; using Lagrange.Core.Common.Entity; using Lagrange.Core.Message; @@ -13,19 +13,19 @@ namespace Lagrange.Core.NativeAPI.NativeModel.Message public struct BotMessageStruct { public BotMessageStruct() { } - + //需要手动释放 public IntPtr Contact = IntPtr.Zero; public IntPtr Receiver = IntPtr.Zero; - + public BotGroupStruct Group = new(); - + public int Type = 0; - + public ByteArrayNative Time = new(); public IntPtr Entities = IntPtr.Zero; - + public int EntityLength = 0; public static implicit operator BotMessageStruct(BotMessage message) @@ -39,8 +39,19 @@ public static implicit operator BotMessageStruct(BotMessage message) type = (int)MessageType.Group; contact = Marshal.AllocHGlobal(Marshal.SizeOf()); Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)message.Contact, contact, false); - receiver = Marshal.AllocHGlobal(Marshal.SizeOf()); - Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)message.Receiver, receiver, false); + + switch (message.Receiver) + { + case BotGroup: + receiver = Marshal.AllocHGlobal(Marshal.SizeOf()); + Marshal.StructureToPtr((BotGroupStruct)(BotGroup)message.Receiver, receiver, false); + break; + case BotGroupMember: + receiver = Marshal.AllocHGlobal(Marshal.SizeOf()); + Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)message.Receiver, receiver, false); + break; + } + break; case MessageType.Private: type = (int)MessageType.Private; @@ -129,7 +140,7 @@ public static implicit operator BotMessageStruct(BotMessage message) IntPtr entityPtr = entitiesPtr + i * Marshal.SizeOf(); Marshal.StructureToPtr(entities[i], entityPtr, false); } - + return new BotMessageStruct() { Contact = contact,