private string GetLocalTz(WowGuildAssociations guild) { var locale = guild.Locale; var realmInfo = new WowRealm.Realm(); var tz = string.Empty; if (!string.IsNullOrEmpty(locale)) { switch (locale) { case "en_US": { realmInfo = WowApi.RealmInfo.realms.FirstOrDefault(r => r.name == guild.WowRealm); break; } case "en_GB": { realmInfo = WowApi.RealmInfoEu.realms.FirstOrDefault(r => r.name == guild.WowRealm); break; } case "ru_RU": { realmInfo = WowApi.RealmInfoRu.realms.FirstOrDefault(r => r.name == guild.WowRealm); break; } } } if (realmInfo != null && !string.IsNullOrEmpty(realmInfo.timezone)) { tz = realmInfo.timezone; } return(tz); }
private async Task PerformLogCheck(List <LogMonitoring> logWatchList, bool flip, WowGuildAssociations guild) { try { var watchGuild = logWatchList.Where(w => w.ServerId == guild.ServerId).FirstOrDefault(); if (watchGuild != null) { if (watchGuild.MonitorLogs) { List <Reports> logs = null; if (!string.IsNullOrEmpty(guild.LocalRealmSlug)) { logs = await GetReportsFromGuild(guildName : guild.WowGuild, locale : guild.Locale, realm : guild.WowRealm.Replace("'", ""), realmSlug : guild.LocalRealmSlug, region : guild.WowRegion, isList : true, flip : flip); } else if (!string.IsNullOrEmpty(guild.Locale)) { logs = await GetReportsFromGuild(guildName : guild.WowGuild, realm : guild.WowRealm.Replace("'", ""), region : guild.WowRegion, isList : true, locale : guild.Locale, flip : flip); } else { logs = await GetReportsFromGuild(guildName : guild.WowGuild, realm : guild.WowRealm.Replace("'", ""), region : guild.WowRegion, isList : true, flip : flip); } if (flip) { flip = false; } else { flip = true; } if (logs != null && logs.Count > 0) { var latestLog = logs[0]; DateTime startTime = UnixTimeStampToDateTime(latestLog.start); //System.Console.WriteLine($"local id [{watchGuild.RetailReportId}] -> remote id [{latestLog.id}] for [{guild.WowGuild}] on [{guild.WowRealm}]."); if (latestLog.id != watchGuild.RetailReportId) { using (var db = new NinjaBotEntities()) { var latestForGuild = db.LogMonitoring.Where(l => l.ServerId == guild.ServerId).FirstOrDefault(); latestForGuild.LatestLogRetail = startTime; latestForGuild.RetailReportId = latestLog.id; await db.SaveChangesAsync(); } ISocketMessageChannel channel = _client.GetChannel((ulong)watchGuild.ChannelId) as ISocketMessageChannel; if (channel != null) { var tz = GetLocalTz(guild); DateTime logStart = GetLocalTime(latestLog, tz); _logger.LogInformation($"Posting log for [{guild.WowGuild}] on [{guild.WowRealm}] for server [{guild.ServerName}]"); var embed = new EmbedBuilder(); embed.Title = $"New log found for [{guild.WowGuild}]!"; StringBuilder sb = new StringBuilder(); sb.AppendLine($"[__**{latestLog.title}** **/** **{latestLog.zoneName}**__]({latestLog.reportURL})"); sb.AppendLine($"\t:timer: Start time: **{logStart}**"); sb.AppendLine($"\t:mag: [WoWAnalyzer](https://wowanalyzer.com/report/{latestLog.id}) | :sob: [WipeFest](https://www.wipefest.net/report/{latestLog.id}) "); sb.AppendLine($"\t:pencil2: Created by [**{latestLog.owner}**]"); sb.AppendLine(); embed.Description = sb.ToString(); embed.WithColor(new Color(0, 0, 255)); await channel.SendMessageAsync("", false, embed.Build()); } } } } } } catch (Exception ex) { //_logger.LogError($"Error checking for logs [{guild.WowGuild}]:[{guild.WowRealm}]:[{guild.WowRealm}]! -> [{ex.Message}]"); } }
public async Task SetGuildAssociation(string wowGuildName, string realmName, string locale, string regionName, ICommandContext context) { try { var guildInfo = context.Guild; string guildName = string.Empty; string realmSlug = string.Empty; string apiRegion = string.Empty; ulong guildId; //guild in this context is the Discord server //this if statement gets the user information if it is a DM, discord server info otherwise if (context.Channel is IDMChannel) { guildName = context.User.Username; guildId = context.User.Id; } else { guildName = guildInfo.Name; guildId = guildInfo.Id; } if (regionName.ToLower() == "us") { apiRegion = "us"; } else { apiRegion = "eu"; } //use locale to determine realm slug for (int i = 0; i < 500; i++) { _logger.LogInformation("Attempting to find slug!"); var slugs = _wowApi.GetRealmStatus(locale: locale, region: apiRegion); realmSlug = realmName; /* * switch (locale) * { * case "ru_RU": * { * realmSlug = slugs.realms.Where(r => r.name.Replace("'","").ToLower().Contains(realmName.Replace("'","").ToLower())).Select(s => s.slug).FirstOrDefault(); * break; * } * case "en_GB": * { * realmSlug = slugs.realms.Where(r => r.name.Replace("'","").ToLower().Contains(realmName.Replace("'","").ToLower())).Select(s => s.slug).FirstOrDefault(); * break; * } * case "en_US": * { * realmSlug = slugs.realms.Where(r => r.name.Replace("'","").ToLower().Contains(realmName.Replace("'","").ToLower())).Select(s => s.slug).FirstOrDefault(); * break; * } * default: * { * realmSlug = slugs.realms.Where(r => r.name.Replace("'","").ToLower().Contains(realmName.Replace("'","").ToLower())).Select(s => s.slug).FirstOrDefault(); * break; * } * } */ if (!string.IsNullOrEmpty(realmSlug)) { _logger.LogInformation($"Found slug {realmSlug}!"); break; } } using (var db = new NinjaBotEntities()) { var foundGuild = db.WowGuildAssociations.FirstOrDefault(g => g.ServerName == guildName); if (foundGuild == null) { WowGuildAssociations newGuild = new WowGuildAssociations { ServerId = (long)guildId, ServerName = guildName, WowGuild = wowGuildName, WowRealm = realmName, WowRegion = apiRegion, LocalRealmSlug = realmSlug, Locale = locale, SetBy = context.User.Username, SetById = (long)context.User.Id, TimeSet = DateTime.Now }; db.WowGuildAssociations.Add(newGuild); } else { foundGuild.ServerId = (long)guildId; foundGuild.WowGuild = wowGuildName; foundGuild.WowRealm = realmName; foundGuild.WowRegion = apiRegion; foundGuild.Locale = locale; foundGuild.LocalRealmSlug = realmSlug; foundGuild.SetBy = context.User.Username; foundGuild.SetById = (long)context.User.Id; foundGuild.TimeSet = DateTime.Now; } await db.SaveChangesAsync(); } } catch (Exception ex) { _logger.LogError($"Error setting guild association for {context.Guild.Name} to {wowGuildName}-{realmName} [{ex.Message}]"); } }