public async Task HandleMessageAsync(IMiraiHttpSession session, IGroupMessageEventArgs e) // 法3: 使用 IMessageBuilder { IMessageChainBuilder builder = session.GetMessageChainBuilder(); builder.AddPlainMessage($"收到了来自{e.Sender.Name}[{e.Sender.Id}]{{{e.Sender.Permission}}}的群消息:{string.Join(null, (IEnumerable<IChatMessage>)e.Chain)}"); // / 发送者群名片 / / 发送者QQ号 / / 发送者在群内权限 / / 消息链 / // builder.AddPlainMessage("QAQ").AddPlainMessage("OvO")/* .AddAtMessage(123456) etc... */; await session.SendGroupMessageAsync(e.Sender.Group.Id, builder /*, plain2, /* etc... */); // 向消息来源群异步发送由以上chain表示的消息 // e.BlockRemainingHandlers = true; // 默认不阻断消息传递。如需阻断请删除注释 }
public async Task HandleMessageAsync(IMiraiHttpSession session, IFriendMessageEventArgs e) // 法3: 使用 params IMessageBase[] { IMessageChainBuilder builder = session.GetMessageChainBuilder(); builder.AddPlainMessage($"收到了来自{e.Sender.Name}({e.Sender.Remark})[{e.Sender.Id}]的私聊消息:{string.Join(null, (IEnumerable<IChatMessage>)e.Chain)}"); // / 好友昵称 / / 好友备注 / / 好友QQ号 / / 消息链 / // builder.AddPlainMessage("QAQ").AddPlainMessage("TvT")/* .AddAtMessage(123456) etc... */; // 你甚至可以一开始 new MessageBuilder() 的时候就开始 Chaining await session.SendFriendMessageAsync(e.Sender.Id, builder); // 向消息来源群异步发送由以上chain表示的消息 // e.BlockRemainingHandlers = true; // 默认不阻断消息传递。如需阻断请删除注释 }
private IMessageChainBuilder ReplaceMessage(IMessageChainBuilder builder, string messageCmd, IGroupMemberInfo member, IGroupMemberInfo Operator = null) { string remainMessage = messageCmd; foreach (Match match in regexTags.Matches(messageCmd)) { string matchString = match.ToString(); int index = remainMessage.IndexOf(matchString); string left = remainMessage.Substring(0, index); if (!string.IsNullOrEmpty(left)) { builder.AddPlainMessage(left); } string right = remainMessage.Substring(index + matchString.Length); remainMessage = right; string identifier = match.ToString(); if (identifier == "<@成员QQ>") { builder.AddAtMessage(member.Id); } else if (identifier == "<成员QQ>") { builder.AddPlainMessage(member.Id.ToString()); } else if (identifier == "<成员昵称>") { builder.AddPlainMessage(member.Name); } else if (Operator != null) { if (identifier == "<@操作者QQ>") { builder.AddAtMessage(Operator.Id); } else if (identifier == "<操作者QQ>") { builder.AddPlainMessage(Operator.Id.ToString()); } else if (identifier == "<操作者昵称>") { builder.AddPlainMessage(Operator.Name); } } } builder.AddPlainMessage(remainMessage); return(builder); }
/// <inheritdoc/> public abstract Task <int> SendTempMessageAsync(long qqNumber, long groupNumber, IMessageChainBuilder builder, int?quoteMsgId, CancellationToken token = default);
/// <inheritdoc/> public virtual Task <int> SendTempMessageAsync(long qqNumber, long groupNumber, IMessageChainBuilder builder, CancellationToken token = default) { return(SendTempMessageAsync(qqNumber, groupNumber, builder, null, default)); }
/// <inheritdoc/> public virtual Task <int> SendFriendMessageAsync(long qqNumber, IMessageChainBuilder builder, CancellationToken token = default) { return(SendFriendMessageAsync(qqNumber, builder, null, token)); }