public GuildChar GetCharFromGuild(string findName, string realmName, string guildName, string regionName = "us") { GuildMembers members = new GuildMembers(); string matchedName = string.Empty; GuildChar guildInfo = new GuildChar(); Regex myRegex = new Regex($@"{findName.ToLower()}"); guildName = guildName.Replace(" ", "%20"); try { members = GetGuildMembers(realmName, guildName, regionName); } catch (Exception ex) { _logger.LogError($"{ex.Message}"); } bool done = false; while (!done) { foreach (Member member in members.members.OrderByDescending(m => m.character.name)) { string curMember = string.Empty; curMember = member.character.name; MatchCollection m = myRegex.Matches(curMember.ToLower()); switch (m.Count) { case 1: { matchedName = curMember; realmName = member.character.realm.slug; guildInfo.charName = curMember; guildInfo.realmName = realmName; guildInfo.regionName = regionName; done = true; break; } default: { break; } } } } return(guildInfo); }
public GuildChar GetCharFromGuild(string findName, string realmName, string guildName, string regionName = "us") { GuildMembers members = new GuildMembers(); string matchedName = string.Empty; GuildChar guildInfo = new GuildChar(); Regex myRegex = new Regex($@"{findName.ToLower()}"); guildName = guildName.Replace(" ", "%20"); Console.WriteLine(guildName); try { members = GetGuildMembers(realmName, guildName, regionName); } catch (Exception ex) { Console.WriteLine($"{ex.Message}"); } Console.WriteLine("Get char from guild"); foreach (Member member in members.members) { string curMember = string.Empty; curMember = member.character.name; MatchCollection m = myRegex.Matches(curMember.ToLower()); switch (m.Count) { case 1: { matchedName = curMember; realmName = member.character.realm; guildInfo.charName = curMember; guildInfo.realmName = realmName; guildInfo.regionName = regionName; break; } default: { break; } } } return(guildInfo); }
public async Task <GuildChar> GetCharFromArgs(string args, ICommandContext context) { string regionPattern = "^[a-z]{2}$"; string charName = string.Empty; string realmName = string.Empty; string foundRegion = string.Empty; Regex matchPattern = new Regex($@"{regionPattern}"); GuildChar guildie = null; List <FoundChar> chars; NinjaObjects.GuildObject guildObject = new NinjaObjects.GuildObject(); GuildChar charInfo = new GuildChar { realmName = string.Empty, charName = string.Empty }; int argNumber = args.Split(' ').Count(); switch (argNumber) { case 1: { charName = args.Split(' ')[0].Trim(); break; } case 2: { charName = args.Split(' ')[0].Trim(); realmName = args.Split(' ')[1].Trim(); break; } } if (argNumber > 2) { charName = args.Split(' ')[0].Replace("'", string.Empty).Trim(); realmName = string.Empty; int i = 0; do { i++; MatchCollection match = matchPattern.Matches(args.Split(' ')[i].ToLower()); if (match.Count > 0) { foundRegion = match[0].Value; break; } if (i == argNumber - 1) { realmName += $"{args.Split(' ')[i]}".Replace("\"", ""); } else { realmName += $"{args.Split(' ')[i]} ".Replace("\"", ""); } }while (i <= argNumber - 2); realmName = realmName.Trim(); } if (string.IsNullOrEmpty(realmName)) { //See if they're a guildie first try { guildObject = await GetGuildName(context); } catch (Exception ex) { _logger.LogError($"Error looking up character: {ex.Message}"); } if (guildObject.guildName != null && guildObject.realmName != null) { guildie = _wowApi.GetCharFromGuild(charName, guildObject.realmName, guildObject.guildName, guildObject.regionName); if (string.IsNullOrEmpty(guildie.charName)) { guildie = null; } } //Check to see if the character is in the guild if (guildie != null) { charName = guildie.charName; realmName = guildie.realmName; charInfo.regionName = guildie.regionName; } else { chars = _wowApi.SearchArmory(charName); if (chars != null) { charName = chars[0].charName; realmName = chars[0].realmName; } } } if (!string.IsNullOrEmpty(foundRegion)) { charInfo.regionName = foundRegion; } charInfo.charName = charName; charInfo.realmName = realmName; if (!string.IsNullOrEmpty(guildObject.locale)) { charInfo.locale = guildObject.locale; } return(charInfo); }