public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/服务器")
     {
         StringBuilder sb = new StringBuilder();
         sb.Append("哔波哔波?\n服务器时区:UTF-" + TimeZoneInfo.Local.GetUtcOffset(DateTime.Now).Hours + "\n当前时间: " + DateTime.Now.ToString() + "\n服务器CPU状态: ");
         sb.Append(BaseData.Instance.cpuUsage.ToString("N0") + "%\n");
         sb.Append("服务器内存使用: ");
         sb.Append(BaseData.Instance.ramUsage.ToString("N0") + "%\n");
         sb.Append("服务器CPU名字: ");
         sb.Append(BaseData.Instance.cpuName);
         if (BaseData.Instance.checkClanWar == null)
         {
             Process.Start(Process.GetCurrentProcess().MainModule.FileName);
             Environment.Exit(0);
         }
         sb.AppendLine("\n部落战检测线程运行状态:" + (BaseData.Instance.checkClanWar.IsAlive?"正在在线":"已断开链接,自动重启线程中..."));
         if (!BaseData.Instance.checkClanWar.IsAlive)
         {
             Thread t = new Thread(() =>
             {
                 //wait 5 sec then run this
                 Thread.Sleep(5000);
                 Process.Start(Process.GetCurrentProcess().MainModule.FileName);
                 Environment.Exit(0);
             });
             t.Start();
         }
         return(new IMessageBase[] { new PlainMessage(sb.ToString()) });
     }
     return(await base.GetReply(chat));
 }
Exemple #2
0
        public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
        {
            if (chat.Message.StartsWith("/踢"))
            {
                Logger.Instance.AddLog(LogType.Info, "接受到踢人指令");
                var sender = chat.Sender;
                if (sender.Permission == GroupPermission.Member)
                {
                    return(new IMessageBase[] { new PlainMessage("已把" + sender.Name + "踢出群聊!他娘的没权限还想踢人?") });
                }
                var at = chat.MessageChain.Where(x => x is AtMessage);
                if (at.Count() < 1)
                {
                    Logger.Instance.AddLog(LogType.Info, "没有检测到QQ");
                    return(new IMessageBase[] { });
                }
                var qq = (at.First() as AtMessage).Target;
                Logger.Instance.AddLog(LogType.Debug, "已检测到QQ号" + qq);
                var member = await chat.Session.GetGroupMemberInfoAsync(qq, chat.FromGroup);

                await chat.Session.KickMemberAsync(qq, chat.FromGroup);

                return(new IMessageBase[] { new PlainMessage("已把" + member.Name + "踢出群聊!") });
            }
            return(await base.GetReply(chat));
        }
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.ToLower().StartsWith("/部落资料 #"))
     {
         try
         {
             var           cocid   = chat.Message.Split(' ').Where(x => x.Contains("#")).Last().Replace(" ", "");
             ICocCoreClans players = BaseData.Instance.container.Resolve <ICocCoreClans>();
             var           player  = players.GetClansMembers(cocid);
             if (player != null)
             {
                 StringBuilder sb = new StringBuilder();
                 sb.AppendLine("部落成员数量:" + player.Count);
                 sb.AppendLine("成员列表: ");
                 foreach (var p in player)
                 {
                     sb.AppendLine(p.Name + " : " + p.Tag);
                 }
                 return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else
             {
                 return(new IMessageBase[] { new PlainMessage("未知的部落冲突ID,无法搜索该部落资料!") });
             }
         }
         catch (Exception ex)
         {
             return(new IMessageBase[] { new PlainMessage("请确保发送/ClanAPI时是/ClanAPI 玩家标签!错误资料:" + ex.Message) });
         }
     }
     return(await base.GetReply(chat));
 }
Exemple #4
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/绑定") && !chat.Message.Contains("群") && !chat.Message.Contains("查看"))
     {
         Logger.Instance.AddLog(LogType.Debug, "接受到改名指令");
         var    sendMember = chat.Sender;
         string newname;
         var    at  = chat.MessageChain.Where(x => x is AtMessage);
         long   tag = 0;
         if (at.Count() > 0)
         {
             tag = (at.First() as AtMessage).Target;
         }
         else
         {
             tag = chat.Sender.Id;
         }
         Logger.Instance.AddLog(LogType.Debug, "检测到艾特为" + tag);
         if (chat.Message.Contains(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]))
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("你当我傻?拿部落标签给我查玩家?草你马的") });
         }
         if (tag == chat.FromQQ)
         {
             if (chat.Message.Contains('#') && chat.Message.Where(x => x == '#').Count() == 1)
             {
                 newname = "#" + chat.Message.Split('#').Last().Trim().ToUpper();
                 ICocCorePlayers players = BaseData.Instance.container.Resolve <ICocCorePlayers>();
                 var             player  = players.GetPlayer(newname);
                 if (!string.IsNullOrEmpty(player.Reason))
                 {
                     return(new IMessageBase[] { new PlainMessage("找不到玩家资料或者玩家标签错误: " + player.Reason) });
                 }
                 if (!Member.ClanData.Any(x => x.ClanID == newname))
                 {
                     Member.ClanData.Add(new ClanData(newname));
                 }
                 if (Member.ClanData.Count == 1)
                 {
                     newname = BaseData.Instance.THLevels[player.TownHallLevel] + "本-" + player.Name;
                 }
                 else
                 {
                     List <string> names = new List <string>();
                     foreach (var clanData in Member.ClanData)
                     {
                         var name = players.GetPlayer(clanData.ClanID).Name;
                         if (name.Length < 3)
                         {
                             names.Add(name);
                         }
                         else
                         {
                             if (names.Contains(name[Math.Min(name.Length, 3)..]) && name.StartsWithChinese())
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message.StartsWith("/绑定群 #"))
     {
         if (chat.Sender.Permission != GroupPermission.Member)
         {
             string clanID = chat.Message.Split(' ').Where(x => x.Contains("#")).Last();
             BaseData.SetClanID(chat.FromGroup, clanID);
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("已绑定" + chat.FromGroup + "为部落ID" + clanID) });
         }
         else
         {
             return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage("我丢你蕾姆,你没权限用这个功能!") });
         }
     }
     return(await base.GetReply(chat));
 }
 public virtual async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (nextChain != null)
     {
         try
         {
             return(await nextChain.GetReply(chat));
         }
         catch (Exception ex)
         {
             var name = nextChain.GetType().Name;
             Logger.Instance.AddLog(LogType.Error, ex.ToString());
             return(new[] { new PlainMessage("处理指令时发生错误!" + name + ".GetReply()" + "! 错误详情: " + ex.Message) });
         }
     }
     else
     {
         return(new IMessageBase[] { });
     }
 }
Exemple #7
0
        public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
        {
            if (chat.Message.StartsWith("/拉黑"))
            {
                Logger.Instance.AddLog(LogType.Debug, "接受到踢人指令");
                var sender = chat.Sender;
                if (sender.Permission == GroupPermission.Member)
                {
                    return(new IMessageBase[] { new PlainMessage("已把" + sender.Name + "踢出群聊!他娘的没权限还想踢人?") });
                }
                var  qq = chat.MessageChain.Where(x => x is AtMessage);
                long tag;
                if (qq.Count() < 0)
                {
                    return(new IMessageBase[] { new PlainMessage("我不知道你在艾特毛线!") });
                }
                tag = (qq.First() as AtMessage).Target;
                var member = await chat.Session.GetGroupMemberInfoAsync(tag, chat.FromGroup);

                Logger.Instance.AddLog(LogType.Debug, "已检测到QQ号" + qq);
                foreach (var group in await chat.Session.GetGroupListAsync())
                {
                    if ((await chat.Session.GetGroupMemberListAsync(group.Id)).Any(x => x.Id == tag))
                    {
                        await chat.Session.KickMemberAsync(tag, group.Id);

                        await chat.Session.SendGroupMessageAsync(group.Id, new PlainMessage("检测到已被拉黑的人存在群里,自动踢出群!"));
                    }
                }
                await chat.Session.KickMemberAsync(tag, chat.FromGroup);

                if (!Directory.Exists("com.coc.groupadmin\\Blacklist"))
                {
                    Directory.CreateDirectory("com.coc.groupadmin\\Blacklist");
                }
                File.WriteAllText("com.coc.groupadmin\\Blacklist\\" + tag, "");
                return(new IMessageBase[] { new PlainMessage("已把" + member.Name + "踢出群聊!") });
            }
            return(await base.GetReply(chat));
        }
Exemple #8
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/部落战剩余进攻")
     {
         ICocCoreClans clan     = BaseData.Instance.container.Resolve <ICocCoreClans>();
         var           clanData = clan.GetCurrentWar(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]);
         if (!string.IsNullOrEmpty(clanData.Reason))
         {
             return(new IMessageBase[] { new PlainMessage("无法获取部落资料!" + clanData.Reason) });
         }
         else
         {
             if (clanData.Reason == "inMaintenance")
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage(" 当前服务器在维护!") });
             }
             else if (clanData.State == "inWar")
             {
                 StringBuilder sb = new StringBuilder();
                 sb.Append("\n你要的部落战资料:\n");
                 foreach (var Member in clanData.Clan.Members)
                 {
                     if (Member.Attacks == null)
                     {
                         sb.Append(Member.Name + " " + Member.Tag + "\n");
                     }
                 }
                 sb.Append("战斗日结束时间:" + clanData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage(" 当前部落不在战斗日!(未开战或准备日)") });
             }
         }
     }
     return(await base.GetReply(chat));
 }
Exemple #9
0
        public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
        {
            if (chat.Message.StartsWith("/清人"))
            {
                Logger.Instance.AddLog(LogType.Debug, "接受到检查指令");
                var GroupMember = await chat.Session.GetGroupMemberListAsync(chat.FromGroup);

                var clan   = BaseData.Instance.container.Resolve <ICocCoreClans>();
                var result = clan.GetClansMembers(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()].Trim());
                if (result == null)
                {
                    return(new IMessageBase[] { new PlainMessage("请检查设置或者绑定部落后才使用此功能!") });
                }
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("不在部落的成员名单: ");
                List <string> noBind = new List <string>();
                foreach (var member in GroupMember)
                {
                    using var api = new GameAPI(chat.FromGroup, member.Id, chat.Session);
                    try
                    {
                        if (api.Member.ClanData.Count < 1)
                        {
                            noBind.Add(api.Member.Member.Card);
                            continue;
                        }
                        if (api.Member.ClanData.Any(x => !x.InClan))
                        {
                            sb.AppendLine(member.Name + ":-");
                            var buffer = api.Member.ClanData;
                            foreach (var data in buffer)
                            {
                                if (!data.InClan)
                                {
                                    if (string.IsNullOrEmpty(data.Name))
                                    {
                                        api.Member.ClanData.Remove(api.Member.ClanData.Where(x => x.ClanID == data.ClanID).First());
                                    }
                                    else
                                    {
                                        try
                                        {
                                            sb.AppendLine(" * " + data.Name + " 已经不在部落" + (DateTime.Now - data.LastSeenInClan.Value).TotalDays.ToString("N2") + "天");
                                        }
                                        catch
                                        {
                                            sb.AppendLine(" * " + data.Name + " 无在部落记录");
                                        }
                                    }
                                }
                            }
                            sb.AppendLine("==============");
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }
                sb.AppendLine("群里无绑定名单: ");
                foreach (var nb in noBind)
                {
                    sb.AppendLine(nb);
                }
                return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
            }
            return(await base.GetReply(chat));
        }
Exemple #10
0
        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);
        }
Exemple #11
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/部落战")
     {
         ICocCoreClans clan     = BaseData.Instance.container.Resolve <ICocCoreClans>();
         var           clanData = clan.GetCurrentWar(BaseData.Instance.config["部落冲突"][chat.FromGroup.ToString()]);
         if (!string.IsNullOrEmpty(clanData.Reason))
         {
             return(new IMessageBase[] { new PlainMessage("无法获取部落资料!" + clanData.Reason) });
         }
         else
         {
             if (clanData.State == "inWar")
             {
                 StringBuilder sb = new StringBuilder();
                 sb.Append("当前的部落战资料:\n");
                 sb.Append("当前我方战星: " + clanData.Clan.Stars + "(摧毁:" + clanData.Clan.DestructionPercentage + ")\n");
                 sb.Append("当前对手战星:" + clanData.Opponent.Stars + "(摧毁:" + clanData.Opponent.DestructionPercentage + ")\n");
                 sb.AppendLine();
                 foreach (var Member in clanData.Clan.Members.OrderBy(x => x.MapPosition))
                 {
                     if (Member.Attacks != null)
                     {
                         sb.Append(Member.Name + "已进攻 " + Member.Attacks.Count + " 次 \n");
                         int x = 1;
                         foreach (var attack in Member.Attacks)
                         {
                             if (x == 1)
                             {
                                 sb.Append("❶");
                             }
                             else
                             {
                                 sb.Append("❷");
                             }
                             sb.Append("攻击了" + clanData.Opponent.Members.Where(y => y.Tag == attack.DefenderTag).FirstOrDefault().MapPosition + "号获得" + attack.Stars + "星|摧毁:" + attack.DestructionPercentage + "%\n");
                             x++;
                         }
                         sb.Append("\n");
                     }
                     else
                     {
                         sb.Append(Member.Name + " " + Member.Tag + " 无进攻次数\n");
                     }
                 }
                 sb.Append("战斗日结束时间:" + clanData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                 return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else if (clanData.State == "warEnded")
             {
                 StringBuilder sb = new StringBuilder();
                 sb.Append("当前部落战资料:\n");
                 sb.Append("当前我方战星: " + clanData.Clan.Stars + "(摧毁:" + clanData.Clan.DestructionPercentage + ")\n");
                 sb.Append("当前对手战星:" + clanData.Opponent.Stars + "(摧毁:" + clanData.Opponent.DestructionPercentage + ")\n");
                 sb.AppendLine();
                 foreach (var Member in clanData.Clan.Members.OrderBy(x => x.MapPosition))
                 {
                     if (Member.Attacks != null)
                     {
                         sb.Append(Member.Name + "已进攻 " + Member.Attacks.Count + " 次 \n");
                         int x = 1;
                         foreach (var attack in Member.Attacks)
                         {
                             if (x == 1)
                             {
                                 sb.Append("❶");
                             }
                             else
                             {
                                 sb.Append("❷");
                             }
                             sb.Append("攻击了" + clanData.Opponent.Members.Where(y => y.Tag == attack.DefenderTag).FirstOrDefault().MapPosition + "号获得" + attack.Stars + "星|摧毁:" + attack.DestructionPercentage + "%\n");
                             x++;
                         }
                         sb.Append("\n");
                     }
                     else
                     {
                         sb.Append(Member.Name + " 无进攻\n");
                     }
                 }
                 sb.Append("部落战已结束!");
                 return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else if (clanData.State == "preparation")
             {
                 StringBuilder sb = new StringBuilder();
                 sb.Append("当前部落战资料:\n");
                 int x = 1;
                 foreach (var Member in clanData.Clan.Members.OrderBy(y => y.MapPosition))
                 {
                     sb.AppendLine(x + ". " + Member.Name);
                     x++;
                 }
                 sb.AppendLine("开战时间为: " + clanData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                 sb.AppendLine("当前为准备日");
                 return(new IMessageBase[] { BaseData.TextToImg(sb.ToString(), chat.Session) });
             }
             else if (clanData.Reason == "inMaintenance")
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage(" 当前服务器在维护!") });
             }
             else
             {
                 return(new IMessageBase[] { new AtMessage(chat.FromQQ), new PlainMessage(" 当前部落无部落战!") });
             }
         }
     }
     return(await base.GetReply(chat));
 }
Exemple #12
0
 public override async Task <IEnumerable <IMessageBase> > GetReply(ChainEventArgs chat)
 {
     if (chat.Message == "/联赛")
     {
         ICocCoreClans war      = BaseData.Instance.container.Resolve <ICocCoreClans>();
         var           keypairs = BaseData.valuePairs(configType.部落冲突);
         if (keypairs.ContainsKey(chat.FromGroup.ToString()))
         {
             List <IMessageBase> result = new List <IMessageBase>();
             LeagueWar           league = war.GetCurrentWarLeague(keypairs[chat.FromGroup.ToString()]);
             if (league != null && string.IsNullOrEmpty(league.Reason))
             {
                 StringBuilder sb = new StringBuilder();
                 sb.AppendLine("============");
                 foreach (var clan in league.Clans)
                 {
                     sb.AppendLine("部落名: " + clan.Name);
                     sb.AppendLine("参赛成员:" + clan.Members.Length);
                     sb.AppendLine("-----------");
                     for (int x = 4; x <= 13; x++)
                     {
                         int count = clan.Members.Count(m => m.TownhallLevel == x);
                         if (count > 0)
                         {
                             sb.AppendLine("拥有" + BaseData.Instance.THLevels[x] + "本 x" + count);
                         }
                     }
                     sb.AppendLine("============");
                 }
                 result.Add(BaseData.TextToImg(sb.ToString(), chat.Session));
                 sb.Clear();
                 Array.Reverse(league.Rounds);
                 Parallel.ForEach(league.Rounds, (rounds) =>
                 {
                     Parallel.ForEach(rounds.warTags, (warTag) =>
                     {
                         if (warTag != "#0")
                         {
                             var roundData = war.GetCurrentWarLeagueRound(warTag);
                             Logger.Instance.AddLog(LogType.Debug, "联赛部落" + roundData.clan.Name + " vs " + roundData.opponent.Name);
                             if (roundData.clan.Tag == keypairs[chat.FromGroup.ToString()].ToUpper())
                             {
                                 if (roundData.state == "preparation")
                                 {
                                     sb.AppendLine("下场联赛开战时间为: " + roundData.StartTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                                     sb.AppendLine("对手为" + roundData.opponent.Name);
                                     result.Add(BaseData.TextToImg(sb.ToString(), chat.Session));
                                     sb.Clear();
                                 }
                                 else if (roundData.state == "inWar")
                                 {
                                     sb.AppendLine("当前联赛结束时间为: " + roundData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                                     sb.AppendLine("对手为" + roundData.opponent.Name);
                                     sb.AppendLine("当前我方战星: " + roundData.clan.Stars + ", 敌方战星: " + roundData.opponent.Stars);
                                     result.Add(BaseData.TextToImg(sb.ToString(), chat.Session));
                                 }
                             }
                             else if (roundData.opponent.Tag == keypairs[chat.FromGroup.ToString()].ToUpper())
                             {
                                 if (roundData.state == "preparation")
                                 {
                                     sb.AppendLine("下场联赛开战时间为: " + roundData.StartTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                                     sb.AppendLine("对手为" + roundData.clan.Name);
                                     result.Add(BaseData.TextToImg(sb.ToString(), chat.Session));
                                     sb.Clear();
                                 }
                                 else if (roundData.state == "inWar")
                                 {
                                     sb.AppendLine("当前联赛结束时间为: " + roundData.EndTime.ToLocalTime().ToString("dd/MM/yyyy hh:mm:ss tt"));
                                     sb.AppendLine("对手为" + roundData.clan.Name);
                                     sb.AppendLine("当前我方战星: " + roundData.opponent.Stars + ", 敌方战星: " + roundData.clan.Stars);
                                     result.Add(BaseData.TextToImg(sb.ToString(), chat.Session));
                                 }
                             }
                         }
                     });
                 });
                 return(result);
             }
             else if (!string.IsNullOrEmpty(league.Reason))
             {
                 if (league.Reason == "inMaintenance")
                 {
                     return(new IMessageBase[] { new PlainMessage(" 当前服务器在维护!") });
                 }
             }
             else
             {
                 return(new IMessageBase[] { new PlainMessage("请在config.ini设置好Clan_ID后再继续使用此功能或者当前不在联赛时间") });
             }
         }
         else
         {
             return(new IMessageBase[] { new PlainMessage("请在config.ini设置好Clan_ID后再继续使用此功能") });
         }
     }
     return(await base.GetReply(chat));
 }