Пример #1
0
 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));
 }
Пример #2
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));
 }
Пример #3
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));
        }
Пример #4
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));
 }
Пример #5
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));
 }