Skip to content

Commit 642a6d6

Browse files
authored
[NativeAPI] 修复 SendGroupMessage 返回错误 (LagrangeDev#29)
1 parent 36a7537 commit 642a6d6

1 file changed

Lines changed: 20 additions & 9 deletions

File tree

Lagrange.Core.NativeAPI/NativeModel/Message/BotMessageStruct.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System.Runtime.InteropServices;
1+
using System.Runtime.InteropServices;
22
using System.Text;
33
using Lagrange.Core.Common.Entity;
44
using Lagrange.Core.Message;
@@ -13,19 +13,19 @@ namespace Lagrange.Core.NativeAPI.NativeModel.Message
1313
public struct BotMessageStruct
1414
{
1515
public BotMessageStruct() { }
16-
16+
1717
//需要手动释放
1818
public IntPtr Contact = IntPtr.Zero;
1919
public IntPtr Receiver = IntPtr.Zero;
20-
20+
2121
public BotGroupStruct Group = new();
22-
22+
2323
public int Type = 0;
24-
24+
2525
public ByteArrayNative Time = new();
2626

2727
public IntPtr Entities = IntPtr.Zero;
28-
28+
2929
public int EntityLength = 0;
3030

3131
public static implicit operator BotMessageStruct(BotMessage message)
@@ -39,8 +39,19 @@ public static implicit operator BotMessageStruct(BotMessage message)
3939
type = (int)MessageType.Group;
4040
contact = Marshal.AllocHGlobal(Marshal.SizeOf<BotGroupMemberStruct>());
4141
Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)message.Contact, contact, false);
42-
receiver = Marshal.AllocHGlobal(Marshal.SizeOf<BotGroupMemberStruct>());
43-
Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)message.Receiver, receiver, false);
42+
43+
switch (message.Receiver)
44+
{
45+
case BotGroup:
46+
receiver = Marshal.AllocHGlobal(Marshal.SizeOf<BotGroupStruct>());
47+
Marshal.StructureToPtr((BotGroupStruct)(BotGroup)message.Receiver, receiver, false);
48+
break;
49+
case BotGroupMember:
50+
receiver = Marshal.AllocHGlobal(Marshal.SizeOf<BotGroupMemberStruct>());
51+
Marshal.StructureToPtr((BotGroupMemberStruct)(BotGroupMember)message.Receiver, receiver, false);
52+
break;
53+
}
54+
4455
break;
4556
case MessageType.Private:
4657
type = (int)MessageType.Private;
@@ -129,7 +140,7 @@ public static implicit operator BotMessageStruct(BotMessage message)
129140
IntPtr entityPtr = entitiesPtr + i * Marshal.SizeOf<TypedEntityStruct>();
130141
Marshal.StructureToPtr(entities[i], entityPtr, false);
131142
}
132-
143+
133144
return new BotMessageStruct()
134145
{
135146
Contact = contact,

0 commit comments

Comments
 (0)