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)); }
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)); }
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)); }
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)); }
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)); }