public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { if (e.GetMessage().Contains("/Genshin")) { var executor = new CommandExecutor { Commands = CommandBases }; var inputCommand = e.GetMessage().ParseCommand(); try { var text = await executor.ExecuteCommand(new CommandUsage { Prefix = inputCommand[0], MainParam = inputCommand[1], Options = inputCommand.HasOptions() ? inputCommand.CopyStringArray(2) : null }); if (text != null) { await session.SendPlainText(e, text); } } catch (Exception exception) { await session.SendPlainText(e, "请求失败:", exception.Message); } } return(false); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { try { if (e.Chain.Length > 1) { bool isReply = false, isAtSource = false; IMessageBuilder builder = new MessageBuilder(); ReplyMessage(e.Chain, builder, e.Sender.Id, ref isReply); if (isReply) //是否回复消息 { if (isAtSource) //是否@消息源 { await session.SendGroupMessageAsync(e.Sender.Group.Id, builder, Convert.ToInt32(e.Chain[0].ToString())); } else { await session.SendGroupMessageAsync(e.Sender.Group.Id, builder); } } } } catch { } return(false); }
public async Task <bool> Accept(MiraiHttpSession session, IGroupMessageEventArgs e) { if (!Config.ApplyedGroups.Contains(e.Sender.Group.Id) || !Utility.SiglePlainMessageChecker(e)) { return(false); } if (((PlainMessage)e.Chain[1]).Message.ToLower() != "accept") { return(false); } var task = Global.currentTask[e.Sender.Group.Id]; if (task == null) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage("当前无挂起的task!")); return(false); } else { if (!Global.acceptList[e.Sender.Group.Id].Add(e.Sender.Id)) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new PlainMessage("请勿重复确认") }, ((SourceMessage)e.Chain[0]).Id); return(false); } //这个顺序是为了保证即使禁言操作抛出了异常,send group message也能正常输出最后一个同步状态而不用写一个丑陋的try-finally块 await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage($"同步状态{task.CurrentMemberNum + 1}/{task.MemberNumRequired}")); await task.IncreaseCurrentNum(); } return(false); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { if (e.Chain.Length != 2 || !(e.Chain[1] is PlainMessage)) { return(false); } var cmd = ((PlainMessage)e.Chain[1]).Message.Split(' ').Where(s => s != string.Empty).ToArray(); if (!CalenderBot.Config.CommandStart.Contains(cmd[0])) { return(false); } var helpMsg = new StringBuilder(); using var writer = new StringWriter(helpMsg); var parser = new Parser(config => config.HelpWriter = writer); await parser.ParseArguments <CommandParser.Default, CommandParser.Config, CommandParser.GenerateCalender>(cmd.Skip(1)) .WithParsedAsync <CommandParser.Config>(async with => await ConfigUser.Run(with, session, e)).GetAwaiter().GetResult() .WithParsedAsync <CommandParser.GenerateCalender>(async with => await GenerateCalender.Run(with, session, e)).GetAwaiter().GetResult() .WithParsedAsync <CommandParser.Default>(async with => await Calender.Run(with, session, e)); if (helpMsg.Length != 0) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage(helpMsg.ToString())); } return(false); }
public async Task <bool> GroupMessage2(MiraiHttpSession session, IGroupMessageEventArgs e) // 法2: 使用 params IMessageBase[] { IMessageBase plain1 = new PlainMessage($"收到了来自{e.Sender.Name}[{e.Sender.Id}]{{{e.Sender.Permission}}}的群消息:{string.Join(null, (IEnumerable<IMessageBase>)e.Chain)}"); // / 发送者群名片 / / 发送者QQ号 / / 发送者在群内权限 / / 消息链 / IMessageBase plain2 = new PlainMessage("QAQ"); // 在下边的 SendGroupMessageAsync, 你可以串起n个 IMessageBase await session.SendGroupMessageAsync(e.Sender.Group.Id, plain1 /*, plain2, /* etc... */); // 向消息来源群异步发送由以上chain表示的消息 return(false); // 不阻断消息传递。如需阻断请返回true }
public static async Task SendPlainText(this MiraiHttpSession session, IGroupMessageEventArgs e, string text) { var builder = new MessageBuilder(); builder.AddAtMessage(e.Sender.Id); builder.AddPlainMessage(" "); builder.AddPlainMessage(text); await session.SendGroupMessageAsync(e.Sender.Group.Id, builder); }
public Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { var text = e.Chain.FirstOrDefault(m => m.Type == "Plain")?.ToString(); if (text == null) { return(new Task <bool>(() => false)); } handlers.Where(h => Regex.IsMatch(text, h.Key)).ToList().ForEach(h => h.Value.DoHandleAsync(session, e.Chain, e.Sender)); return(new Task <bool>(() => false)); }
public static bool ProcessCommandSession(IGroupMessageEventArgs args, out string?processedMsg) { processedMsg = null; if (!SiglePlainMessageChecker(args)) { return(false); } var ret = ProcessCommandString(((PlainMessage)args.Chain[1]).Message, out processedMsg); return(ret); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { // 临时消息和群消息一致, 不多写例子了 IMessageBase[] chain = new IMessageBase[] { new PlainMessage($"收到了来自{e.Sender.Name}[{e.Sender.Id}]{{{e.Sender.Permission}}}的群消息:{string.Join(null, (IEnumerable<IMessageBase>)e.Chain)}") // / 发送者群名片 / / 发送者QQ号 / / 发送者在群内权限 / / 消息链 / }; await session.SendGroupMessageAsync(e.Sender.Group.Id, chain); // 向消息来源群异步发送由以上chain表示的消息 return(false); // 不阻断消息传递。如需阻断请返回true }
public async Task <bool> GroupMessage3(MiraiHttpSession session, IGroupMessageEventArgs e) // 法3: 使用 IMessageBuilder { IMessageBuilder builder = new MessageBuilder(); builder.AddPlainMessage($"收到了来自{e.Sender.Name}[{e.Sender.Id}]{{{e.Sender.Permission}}}的群消息:{string.Join(null, (IEnumerable<IMessageBase>)e.Chain)}"); // / 发送者群名片 / / 发送者QQ号 / / 发送者在群内权限 / / 消息链 / // builder.AddPlainMessage("QAQ").AddPlainMessage("QwQ")/* .AddAtMessage(123456) etc... */; // 你甚至可以一开始 new MessageBuilder() 的时候就开始 Chaining await session.SendGroupMessageAsync(e.Sender.Group.Id, builder /*, plain2, /* etc... */); // 向消息来源群异步发送由以上chain表示的消息 return(false); // 不阻断消息传递。如需阻断请返回true }
public async Task <bool> ImageMonitor(MiraiHttpSession session, IGroupMessageEventArgs e) { var chain = e.Chain; foreach (var msg in chain) { if (msg is ImageMessage image) { await using var file = new System.IO.StreamWriter("ImageMonitor.txt", true); await file.WriteLineAsync($"{DateTime.Now.ToLongTimeString()} {e.Sender.Group.Id} {e.Sender.Id} {e.Sender.Name} {image.Url}"); } } return(false); }
private async Task <PlainMessage> GroupMessageHandler(IGroupMessageEventArgs e) { // 只允许特定群 //if (e.Sender.Group.Id != Setting.GroupId) // return null; if (!Setting.GroupIds.Contains(e.Sender.Group.Id)) { return(null); } $"收到了来自{e.Sender.Name}[{e.Sender.Id}]{{{e.Sender.Permission}}}的群消息:{string.Join(null, (IEnumerable<IMessageBase>)e.Chain)}".LogInfo(); // / 发送者群名片 / / 发送者QQ号 / / 发送者在群内权限 return(await _groupHandler.CommandHandler(e)); }
public async Task <bool> MemberKick(MiraiHttpSession session, IGroupMessageEventArgs e) { if (!Config.ApplyedGroups.Contains(e.Sender.Group.Id)) { return(false); } string?command; bool iscommand = Utility.ProcessCommandSession(e, out command); if (!iscommand) { return(false); } var commandArgs = command.Split(' ', StringSplitOptions.RemoveEmptyEntries); if (commandArgs.Length != 2 || !memberKickCommandList.Contains(commandArgs[0])) { return(false); } long target; if (!long.TryParse(commandArgs[1], out target)) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new PlainMessage("输入的参数有误") }, ((SourceMessage)e.Chain[0]).Id); return(false); } if (Global.currentTask[e.Sender.Group.Id] != null) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new AtMessage(e.Sender.Id), new PlainMessage("已有命令注册,请等待被注册命令结束") }); return(false); } Global.currentTask[e.Sender.Group.Id] = new MemberKick(target, e.Sender.Group.Id, session); await Task.Delay(TimeSpan.FromMinutes(2)); if (Global.currentTask[e.Sender.Group.Id] != null) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage("挂起的任务已超时")); } Global.currentTask[e.Sender.Group.Id] = null; return(false); }
public static async Task <bool> Listener(MiraiHttpSession session, IGroupMessageEventArgs e) { _ = Group.Groups.TryAdd(e.Sender.Group.Id, new Group(e.Sender.Group.Id)); var curgp = Group.Groups[e.Sender.Group.Id]; if (curgp.MessageQueue.Count <= curgp.MaxMessageNum) { curgp.MessageQueue.AddToBack(e); } else { curgp.MessageQueue.RemoveFromFront(); curgp.MessageQueue.AddToBack(e); } return(false); }
public async Task <bool> OnAt(MiraiHttpSession session, IGroupMessageEventArgs e) { bool selfAted = e.Chain.Where(msg => msg is AtMessage) .Cast <AtMessage>() .Select(atmsg => atmsg.Target) .Contains(session.QQNumber.Value); if (selfAted) { var imgmsg = await session.UploadPictureAsync(UploadTarget.Group, @"..\..\..\images\kokoaCry.jpg"); await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new PlainMessage("检测到您正在at我!主人很懒,不想实" + "现接受at信息调用我的模块,请直接使用文字命令来调用!"), imgmsg }, ((SourceMessage)e.Chain[0]).Id); } return(false); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { if (e.GetMessage().IsCommand()) { var assembly = Assembly.GetExecutingAssembly(); var fileVersion = FileVersionInfo.GetVersionInfo(assembly.Location); switch (e.GetMessage()) { case "/Help": await session.SendPlainText(e, $"欢迎使用HeliumBot {fileVersion.FileVersion}", "===================", "/Help : 查看帮助", "/Genshin <uid> : 获取指定原神UID的公开信息", "/Genshin <uid> -Avatar : 获取指定原神UID的公开信息,并查看获得的角色", "/GenshinAbyss <uid> : 获取指定原神UID的深渊战绩", "/GenshinAbyss <uid> -Detail : 获取指定原神UID的深渊战绩,并且查看每层每间详情", "/Money : 给作者打钱", "/About : 查看Bot的关于信息"); break; case "/Money": var img = await session.UploadPictureAsync(UploadTarget.Group, await new HttpClient().GetStreamAsync("https://i.loli.net/2021/05/04/fXOm1xnrsBg45Zh.jpg")); await session.SendGroupMessageAsync(e.Sender.Group.Id, img); break; case "/About": await session.SendPlainText(e, $"HeliumBot {fileVersion.FileVersion}", $"Maintain by AHpx(https://github.com/AHpxChina)", $"Based on Mirai-CSharp(https://github.com/Executor-Cheng/Mirai-CSharp)", $"Open source repository on https://github.com/AHpxChina/HeliumBot", $"Acknowledgment:", $"mirai(https://github.com/mamoe/mirai)", $"mirai-api-http(https://github.com/mamoe/mirai-api-http)", $"mirai-console(https://github.com/mamoe/mirai-console)"); break; } } return(false); }
/// <summary> /// 接受群消息接口 /// </summary> /// <param name="session"></param> /// <param name="e"></param> /// <returns></returns> public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { foreach (var item in e.Chain) { if (item.Type.Equals("Plain")) { string message = item.ToString(); GameInput gameInput = new GameInput(session, message, e.Sender, e.Sender.Group); try { await GameSelector.DealCommand(gameInput); } catch (Exception ex) { await gameInput.ReplyGroup("命令错误!" + ex.Message); } } } return(false); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) // 法2: 使用 params IMessageBase[] { if (e.Chain[1].Type == "Image") { var source = (SourceMessage)e.Chain[0]; await session.RevokeMessageAsync(source.Id); return(true); } var replyMsg = await GroupMessageHandler(e); if (replyMsg == null || replyMsg.Message == string.Empty) { return(true); } await session.SendGroupMessageAsync(e.Sender.Group.Id, new AtMessage(e.Sender.Id), replyMsg /*, plain2, /* etc... */); // 向消息来源群异步发送由以上chain表示的消息 return(false); // 不阻断消息传递。如需阻断请返回true }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { var source = e.Chain.First() as SourceMessage; if (source != null && (Configuration.GetConfig <Antirevoke>().hash.Contains(e.Sender.Group.Id) || e.Sender.Group.Id == 708647018)) { var now = DateTime.Now; while (msgRecord.Count > 0) { if (now - msgRecord.Peek().time > new TimeSpan(0, 10, 0)) { msgRecord.Dequeue(); } else { break; } } msgRecord.Enqueue(new Message { id = source.Id, message = e.Chain.Skip(1).ToArray(), group = e.Sender.Group.Id, qq = e.Sender.Id, time = now }); } await OnMessage(session, Utils.GetCQMessage(e.Chain), new Source { FromGroup = e.Sender.Group.Id, FromQQ = e.Sender.Id, Session = session }); return(false); }
private async Task <bool> Session_GroupMessageEvt(MiraiHttpSession sender, IGroupMessageEventArgs e) { var msg = MsgParser.GetMsgString(e.Chain); var time = DateTime.Now; if (e.Sender.Group.Id == currentSession && currentType == Model.Enums.SessionType.GroupMsg) { this.Invoke(new Action(() => { RtbMessage.Text += "\r\n" + $"{time:dd/MM/yyyy HH:mm:ss} {e.Sender.Name} ({e.Sender.Id}):\r\n{msg}"; })); } this.Invoke(new Action(() => { NtfIcon.ShowBalloonTip(500, "New Message", $"From {e.Sender.Group.Name} ({e.Sender.Id}\n{msg}", ToolTipIcon.Info); })); HistoryMsg.Group.AddMsg(e.Sender.Group, msg, time, e.Sender); return(false); }
public async Task <bool> ManagementUsingAt(MiraiHttpSession session, IGroupMessageEventArgs e) { for (int i = 0; i < e.Chain.Length; i++) { if (e.Chain[i] is AtMessage atmsg) { e.Chain[i] = new PlainMessage(atmsg.Target.ToString()); } else if (!(e.Chain[i] is SourceMessage) && !(e.Chain[i] is PlainMessage)) { return(false); } } var newChain = new IMessageBase[] { e.Chain[0], new PlainMessage(e.Chain.Skip(1).Select(msg => ((PlainMessage)msg).Message) .Aggregate((x, y) => x + y)) }; //Console.WriteLine(((PlainMessage)newChain[1]).Message); var newArgs = new GroupMessageEventArgs(newChain, e.Sender); await MemberBan(session, newArgs); await MemberKick(session, newArgs); return(false); }
public static string GetMessage(this IGroupMessageEventArgs ex) { return(ex.Chain[1].ToString()); }
public async Task <bool> MemberBan(MiraiHttpSession session, IGroupMessageEventArgs e) { if (!Config.ApplyedGroups.Contains(e.Sender.Group.Id)) { return(false); } string?command; bool isCommand = Utility.ProcessCommandSession(e, out command); if (!isCommand) { return(false); } var commandArgs = command.Split(' ', count: 3, StringSplitOptions.RemoveEmptyEntries); if (commandArgs.Length != 3 || !memberBanCommandList.Contains(commandArgs[0].ToLower())) { return(false); } long target; string[] time; int h, m, s; bool ok = long.TryParse(commandArgs[1], out target); time = commandArgs[2].Split(':', StringSplitOptions.RemoveEmptyEntries); ok &= (time.Length == 3); if (!ok) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new AtMessage(e.Sender.Id), new PlainMessage("参数错误") }); return(false); } if (!int.TryParse(time[0], out h) || !int.TryParse(time[1], out m) || !int.TryParse(time[2], out s)) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new AtMessage(e.Sender.Id), new PlainMessage("参数错误") }); return(false); } if (Global.currentTask[e.Sender.Group.Id] != null) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new AtMessage(e.Sender.Id), new PlainMessage("已有命令注册,请等待被注册命令结束") }); return(false); } Global.currentTask[e.Sender.Group.Id] = new MemberBan(target, e.Sender.Group.Id, session, new TimeSpan(h, m, s)); await Task.Delay(TimeSpan.FromMinutes(2)); if (Global.currentTask[e.Sender.Group.Id] != null) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage("挂起的任务已超时")); } Global.currentTask[e.Sender.Group.Id] = null; return(false); }
public static async Task Run(CommandParser.Config args, MiraiHttpSession session, IGroupMessageEventArgs e) { if (args.ConfigInGroup == false) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage("警告:未提供命令参数-g的情况下在群内试图配置用户信息。\n" + "为保证账号安全,停止了此操作并尝试撤回了信息。")); await session.RevokeMessageAsync(((SourceMessage)e.Chain[0]).Id); return; } await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage("正在保存...")); var user = new User(e.Sender.Id) { Username = args.Username, Password = args.Password }; bool ok = await user.TrySave(); await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage(ok ? "成功更改了配置。" : "抱歉,遇到了错误,请稍后再试。")); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { qc.chainReceived(e.Sender.Group, e.Sender, e.Chain); return(false); }
async Task <bool> IGroupMessage.GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { if (BotInfo.BannedGroup.Contains(e.Sender.Group.Id)) { return(false); } if (BotInfo.BannedUser.Contains(e.Sender.Id)) { return(false); } if (BotInfo.DebugMode) { if (BotInfo.DebugReplyAdminOnly) { if (!BotInfo.AdminQQ.Contains(e.Sender.Id)) { return(false); } } if (BotInfo.OnlyReplyDebugGroup) { if (!BotInfo.DebugGroups.Contains(e.Sender.Group.Id)) { return(false); } } } QuoteMessage quoteMessage = new QuoteMessage((e.Chain[0] as SourceMessage).Id, e.Sender.Group.Id, e.Sender.Id, e.Sender.Id, null); if (e.Chain.Length > 1) //普通消息 { switch (e.Chain[1].Type) { case "At": if (e.Chain.Length > 2) { #region -- @搜图 -- AtMessage atMe = e.Chain[1] as AtMessage; if (atMe.Target == BotInfo.QQId) //@自己 { for (int i = 2; i < e.Chain.Length; i++) { if (e.Chain[i].Type == "Image") { ImageMessage imgMsg = e.Chain[i] as ImageMessage; await SearchPictureHandler.SearchPicture(imgMsg, picStream => session.UploadPictureAsync(UploadTarget.Group, picStream), msg => session.SendGroupMessageAsync(e.Sender.Group.Id, msg, quoteMessage.Id)); } } } #endregion -- @搜图 -- } break; case "Plain": PlainMessageHandler.HandleGroupMesage(session, e.Chain, e.Sender, quoteMessage); break; case "Image": if (Cache.SearchingPictures.Keys.Contains(e.Sender.Id)) { #region -- 连续搜图 -- for (int i = 1; i < e.Chain.Length; i++) { ImageMessage imgMsg = e.Chain[i] as ImageMessage; await SearchPictureHandler.SuccessiveSearchPicture(session, imgMsg, e.Sender, picStream => session.UploadPictureAsync(UploadTarget.Group, picStream), msg => session.SendGroupMessageAsync(e.Sender.Group.Id, msg, quoteMessage.Id)); } #endregion -- 连续搜图 -- } break; } } return(false); }
public async Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { Stopwatch sw = Stopwatch.StartNew(); if (e.Chain[1] is PlainMessage) { var plain = e.Chain[1] as PlainMessage; lock (Instance.LogLocker) { Console.Write("[" + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + "] ", Color.Yellow); Console.Write("[MESSAGE] ", Color.ForestGreen); Console.Write("[" + e.Sender.Group.Name + "]: ", Color.Orange); Console.Write("[" + e.Sender.Name + "]: ", Color.Cyan); Console.WriteLine(plain.Message.Replace("\n", "\\n")); } var data = valuePairs(configType.自动回复); if (data.Keys.Contains(plain.Message)) { if (data[plain.Message].Contains('|')) { var messages = data[plain.Message].Split('|'); Random rnd = new Random(); StringBuilder sb = new StringBuilder(); var lines = messages[rnd.Next(0, messages.Length)].Split('\\'); foreach (var line in lines) { sb.AppendLine(line); } foreach (var message in SplitLongMessage(sb.ToString())) { if (message.Contains("@发送者")) { List <IMessageBase> mb = new List <IMessageBase>(); var splits = message.Split("@发送者"); foreach (var split in splits) { if (string.IsNullOrWhiteSpace(split) || string.IsNullOrEmpty(split)) { continue; } mb.Add(new AtMessage(e.Sender.Id)); mb.Add(new PlainMessage(split)); } await session.SendGroupMessageAsync(e.Sender.Group.Id, mb.ToArray()); } else { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new PlainMessage(message) }); } Thread.Sleep(rnd.Next(1000, 4000)); } } else { StringBuilder sb = new StringBuilder(); var lines = data[plain.Message].Split('\\'); foreach (var line in lines) { sb.AppendLine(line); } Random rnd = new Random(); foreach (var message in SplitLongMessage(sb.ToString())) { if (message.Contains("@发送者")) { List <IMessageBase> mb = new List <IMessageBase>(); var splits = message.Split("@发送者"); foreach (var split in splits) { if (string.IsNullOrWhiteSpace(split) || string.IsNullOrEmpty(split)) { continue; } mb.Add(new AtMessage(e.Sender.Id)); mb.Add(new PlainMessage(split)); } await session.SendGroupMessageAsync(e.Sender.Group.Id, mb.ToArray()); } else { await session.SendGroupMessageAsync(e.Sender.Group.Id, new IMessageBase[] { new PlainMessage(message) }); } Thread.Sleep(rnd.Next(1000, 4000)); } } } else if (plain.Message.StartsWith("/")) { var eventArgs = new ChainEventArgs() { Message = plain.Message, MessageChain = e.Chain, Sender = e.Sender, Session = session }; using GameAPI Member = new GameAPI(eventArgs); Instance.chains[0].SetMember(Member.Member); var result = await Instance.chains[0].GetReply(eventArgs); if (result.Count() > 0) { await session.SendGroupMessageAsync(e.Sender.Group.Id, result.ToArray()); } else if (!Instance.GameEnabled.Any(x => x == e.Sender.Group.Id)) { switch (plain.Message) { case "/拉霸": Member.JackPot(); break; case "/寻宝": Member.FindTreasure(); break; case "/帮助": Member.Help(); break; case "/工作": Member.MemberWork(); break; case "/我": Member.MemberCheck(); break; case "/21点": Member.Member21Point(); break; case "/排名": Member.GetRank(); break; case "/合成A": case "/合成a": Member.Buff("A"); break; case "/合成H": case "/合成h": Member.Buff("H"); break; case "/拍卖场": Member.ListTrade(); break; default: if (plain.Message.StartsWith("/打劫")) { Member.Robber(new ChainEventArgs() { Message = plain.Message, MessageChain = e.Chain, Sender = e.Sender, Session = session }); } else if (plain.Message.StartsWith("/购买")) { Member.Shop(new ChainEventArgs() { Message = plain.Message, MessageChain = e.Chain, Sender = e.Sender, Session = session }); } else if (plain.Message.StartsWith("/技能")) { Member.SkillShop(new ChainEventArgs() { Message = plain.Message, MessageChain = e.Chain, Sender = e.Sender, Session = session }); } else if (plain.Message.StartsWith("/拍卖场购买")) { Member.PurchaseTradeItem(plain.Message); } else if (plain.Message.StartsWith("/拍卖场出售")) { Member.SellTradeItem(plain.Message); } break; } } } sw.Stop(); Logger.Instance.AddLog(LogType.Debug, "消息处理完毕,使用了" + sw.Elapsed.TotalMilliseconds + "毫秒"); return(true); } else { lock (Instance.LogLocker) { Console.Write("[" + DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss") + "] ", Color.Yellow); Console.Write("[MESSAGE] ", Color.ForestGreen); Console.Write("[" + e.Sender.Group.Name + "]: ", Color.FloralWhite); Console.Write("[" + e.Sender.Name + "]: ", Color.Cyan); for (int x = 1; x < e.Chain.Length; x++) { Console.Write(e.Chain[x].ToString().Replace("\n", "\\n")); } Console.WriteLine(); } } if (Directory.Exists("Buffer")) { foreach (var file in Directory.GetFiles("Buffer")) { FileInfo info = new FileInfo(file); var alived = DateTime.Now - info.CreationTime; if (alived.TotalDays >= 1) { try { info.Delete(); } catch { Logger.Instance.AddLog(LogType.Error, "缓存文件[" + file + "]无法被删除!"); } } } } sw.Stop(); Logger.Instance.AddLog(LogType.Debug, "消息处理完毕,使用了" + sw.Elapsed.TotalMilliseconds + "毫秒"); return(false); }
public Task <bool> GroupMessage(MiraiHttpSession session, IGroupMessageEventArgs e) { BotCore.OnMessage(new MessageSource(e.Sender.Group.Id, e.Sender.Id, false), new QMessage(e.Chain)); return(Task.FromResult(true)); }
public static async Task Run(CommandParser.GenerateCalender args, MiraiHttpSession session, IGroupMessageEventArgs e) { if (++CurrentGenerateRequestNum > 3) { await session.SendGroupMessageAsync(e.Sender.Group.Id, new PlainMessage("目前请求过多。请稍后再试")); CurrentGenerateRequestNum--; return; } if (System.IO.File.Exists(@$ "{Config.RootPath}\Users\{e.Sender.Id}\calender.json"))
public static bool SiglePlainMessageChecker(IGroupMessageEventArgs args) => args.Chain.Length == 2 && args.Chain[1] is PlainMessage;