diff --git a/Lagrange.Core.NativeAPI/SendMessageContext.cs b/Lagrange.Core.NativeAPI/SendMessageContext.cs index ca5bf627..69b8098f 100644 --- a/Lagrange.Core.NativeAPI/SendMessageContext.cs +++ b/Lagrange.Core.NativeAPI/SendMessageContext.cs @@ -1,4 +1,4 @@ -using System.Text; +using System.Text; using Lagrange.Core.Message; namespace Lagrange.Core.NativeAPI @@ -87,6 +87,32 @@ public void AddLocalImage(int id, byte[] path, byte[]? summary = null, } } + public void AddMention(int id, long uin, byte[]? display = null) + { + if (MessageBuilders.TryGetValue(id, out var builder)) + { + builder.Mention(uin, display is null ? null : Encoding.UTF8.GetString(display)); + } + } + + public void AddReply(int id /*, BotMessage messages */) + { + throw new NotImplementedException(); + } + + public void AddMultiMsg(int id /*, List messages */) + { + throw new NotImplementedException(); + } + + public void AddMultiMsg(int id, byte[] resId) + { + if (MessageBuilders.TryGetValue(id, out var builder)) + { + builder.MultiMsg(Encoding.UTF8.GetString(resId)); + } + } + public void AddRecord(int id, byte[] record) { if (MessageBuilders.TryGetValue(id, out var builder)) diff --git a/Lagrange.Core.NativeAPI/SendMessageEntryPoint.cs b/Lagrange.Core.NativeAPI/SendMessageEntryPoint.cs index ecae5984..d36596e4 100644 --- a/Lagrange.Core.NativeAPI/SendMessageEntryPoint.cs +++ b/Lagrange.Core.NativeAPI/SendMessageEntryPoint.cs @@ -83,6 +83,46 @@ int subType ); } + //display可选,可以传结构内Length为0或Data为Zero的ByteArrayNative + [UnmanagedCallersOnly(EntryPoint = "AddMention")] + public static void AddMention( + int index, + int id, + long uin, + ByteArrayNative display + ) + { + if (Program.Contexts.Count <= index) + { + return; + } + + byte[]? ds = display.IsEmpty() ? null : display.ToByteArrayWithoutFree(); + + var context = Program.Contexts[index]; + context.SendMessageContext.AddMention( + id, uin, ds + ); + } + + [UnmanagedCallersOnly(EntryPoint = "AddMultiMsg")] + public static void AddMultiMsg( + int index, + int id, + ByteArrayNative resId + ) + { + if (Program.Contexts.Count <= index) + { + return; + } + + var context = Program.Contexts[index]; + context.SendMessageContext.AddMultiMsg( + id, resId.ToByteArrayWithoutFree() + ); + } + [UnmanagedCallersOnly(EntryPoint = "AddRecord")] public static void AddRecord(int index, int id, ByteArrayNative byteArrayNative) {