1- using System . Runtime . InteropServices ;
1+ using System . Runtime . InteropServices ;
22using System . Text ;
33using Lagrange . Core . Common . Entity ;
44using 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