private bool?CheckLocation(JsonClasses.SystemName rSystem, JsonZKill.Killmail kill, string groupName, string filterName) { if (rSystem == null) { LogHelper.LogError($"System not found: {kill.solar_system_id}!", Category).GetAwaiter().GetResult(); return(false); } //System var fSystems = GetTier2SystemIds(ParsedLocationLists, groupName, filterName); if (fSystems.Any() && fSystems.Contains(kill.solar_system_id)) { return(true); } //Constellation var fConsts = GetTier2ConstellationIds(ParsedLocationLists, groupName, filterName); if (fConsts.Any() && fConsts.Contains(rSystem.constellation_id)) { return(true); } //Region var fRegions = GetTier2RegionIds(ParsedLocationLists, groupName, filterName); if (fRegions.Any() && rSystem.DB_RegionId.HasValue && fRegions.Contains(rSystem.DB_RegionId.Value)) { return(true); } return(fSystems.Any() || fConsts.Any() || fRegions.Any() ? false : (bool?)null); }
private bool?CheckLocation(JsonClasses.SystemName rSystem, JsonZKill.Killmail kill, KillMailFilter filter, string groupName, string filterName) { if (rSystem == null) { LogHelper.LogError($"System not found: {kill.solar_system_id}!", Category).GetAwaiter().GetResult(); return(false); } if (!filter.ShowHighsecSystem && rSystem.security_status >= .5f) { return(false); } if (!filter.ShowLowsecSystem && rSystem.security_status >= .1f) { return(false); } if (!filter.ShowWormholeSystem && rSystem.IsWormhole()) { return(false); } if (!filter.ShowAbyssSystem && rSystem.IsAbyss()) { return(false); } if (!filter.ShowNullsecSystem && rSystem.security_status <= 0f) { return(false); } //Region var fRegions = GetTier2RegionIds(ParsedLocationLists, groupName, filterName); if (fRegions.Any() && rSystem.DB_RegionId.HasValue && fRegions.Contains(rSystem.DB_RegionId.Value)) { return(true); } //Constellation var fConsts = GetTier2ConstellationIds(ParsedLocationLists, groupName, filterName); if (fConsts.Any() && fConsts.Contains(rSystem.constellation_id)) { return(true); } //System var fSystems = GetTier2SystemIds(ParsedLocationLists, groupName, filterName); if (fSystems.Any() && fSystems.Contains(kill.solar_system_id)) { return(true); } return(fSystems.Any() || fConsts.Any() || fRegions.Any() ? false : (bool?)null); }
public async Task <bool> RefreshRadius(string reason, JsonZKill.Killmail kill) { if (killmailID > 0) { return(true); } try { killmailID = kill.killmail_id; value = kill.zkb.totalValue; systemId = kill.solar_system_id; rSystem = await APIHelper.ESIAPI.GetSystemData(reason, systemId); isUnreachableSystem = systemId == 31000005; if (rSystem != null) { sysName = rSystem.name == rSystem.system_id.ToString() ? "Abyss" : (rSystem.name ?? "J"); isUnreachableSystem = rSystem.IsUnreachable(); } else { sysName = "?"; } victimCharacterID = kill.victim.character_id; victimCorpID = kill.victim.corporation_id; victimAllianceID = kill.victim.alliance_id; attackers = kill.attackers; finalBlowAttacker = attackers.FirstOrDefault(a => a.final_blow); finalBlowAttackerCorpId = finalBlowAttacker?.corporation_id ?? 0; finalBlowAttackerAllyId = finalBlowAttacker?.alliance_id ?? 0; shipID = kill.victim.ship_type_id; killTime = kill.killmail_time.ToString(SettingsManager.Settings.Config.ShortTimeFormat); rVictimCorp = await APIHelper.ESIAPI.GetCorporationData(reason, victimCorpID); rAttackerCorp = finalBlowAttackerCorpId > 0 ? await APIHelper.ESIAPI.GetCorporationData(reason, finalBlowAttackerCorpId) : null; rVictimAlliance = victimAllianceID != 0 ? await APIHelper.ESIAPI.GetAllianceData(reason, victimAllianceID) : null; rAttackerAlliance = finalBlowAttackerAllyId > 0 ? await APIHelper.ESIAPI.GetAllianceData(reason, finalBlowAttackerAllyId) : null; rShipType = await APIHelper.ESIAPI.GetTypeId(reason, shipID); rVictimCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, victimCharacterID); rAttackerCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, finalBlowAttacker?.character_id); systemSecurityStatus = Math.Round(rSystem.security_status, 1).ToString("0.0"); dic = new Dictionary <string, string> { { "{shipID}", shipID.ToString() }, { "{shipType}", rShipType?.name }, { "{iskValue}", value.ToString("n0") }, { "{systemName}", sysName }, { "{systemSec}", systemSecurityStatus }, { "{victimName}", rVictimCharacter?.name }, { "{victimCorpName}", rVictimCorp?.name }, { "{victimCorpTicker}", rVictimCorp?.ticker }, { "{victimAllyName}", rVictimAlliance?.name }, { "{victimAllyTicker}", rVictimAlliance == null ? null : $"<{rVictimAlliance.ticker}>" }, { "{attackerName}", rAttackerCharacter?.name }, { "{attackerCorpName}", rAttackerCorp?.name }, { "{attackerCorpTicker}", rAttackerCorp?.ticker }, { "{attackerAllyTicker}", rAttackerAlliance == null ? null : $"<{rAttackerAlliance.ticker}>" }, { "{attackerAllyName}", rAttackerAlliance?.name }, { "{attackersCount}", attackers?.Length.ToString() }, { "{kmId}", killmailID.ToString() }, { "{isNpcKill}", isNPCKill.ToString() }, { "{timestamp}", killTime } }; return(true); } catch (Exception ex) { killmailID = 0; await LogHelper.LogEx("refresh ex", ex, LogCat.RadiusKill); return(false); } }
private bool?CheckLocation(JsonClasses.SystemName rSystem, JsonZKill.Killmail kill, bool isInclusive, string groupName, string filterName) { var isPassed = false; if (rSystem == null) { LogHelper.LogError($"System not found: {kill.solar_system_id}!", Category).GetAwaiter().GetResult(); return(false); } var fCount = 0; //System var fLocs = GetTier2SystemIds(ParsedLocationLists, groupName, filterName); if (fLocs.Any()) { if (isInclusive && !fLocs.Contains(kill.solar_system_id)) { return(false); } if (!isInclusive && fLocs.Contains(kill.solar_system_id)) { return(false); } if (isInclusive) { isPassed = true; } } else { fCount++; } //Constellation if (!isPassed) { fLocs = GetTier2ConstellationIds(ParsedLocationLists, groupName, filterName); if (fLocs.Any()) { if (isInclusive && !fLocs.Contains(rSystem.constellation_id)) { return(false); } if (!isInclusive && fLocs.Contains(rSystem.constellation_id)) { return(false); } if (isInclusive) { isPassed = true; } } else { fCount++; } } //Region if (!isPassed) { fLocs = GetTier2RegionIds(ParsedLocationLists, groupName, filterName); if (fLocs.Any() && rSystem.DB_RegionId.HasValue) { if (isInclusive && !fLocs.Contains(rSystem.DB_RegionId.Value)) { return(false); } if (!isInclusive && fLocs.Contains(rSystem.DB_RegionId.Value)) { return(false); } if (isInclusive) { isPassed = true; } } else { fCount++; } } return(fCount == 3 ? (bool?)null : true); }
internal static async Task SearchCharacter(ICommandContext context, string name) { var channel = context.Channel; var charSearch = await APIHelper.ESIAPI.SearchCharacterId(LogCat.CharSearch.ToString(), name); if (charSearch == null) { await APIHelper.DiscordAPI.ReplyMessageAsync(context, LM.Get("charNotFound"), true); return; } var characterId = charSearch.character[0]; var characterData = await APIHelper.ESIAPI.GetCharacterData(LogCat.CharSearch.ToString(), characterId, true); if (characterData == null) { await APIHelper.DiscordAPI.ReplyMessageAsync(context, LM.Get("charNotFound"), true); return; } var corporationData = await APIHelper.ESIAPI.GetCorporationData(LogCat.CharSearch.ToString(), characterData.corporation_id); var zkillContent = await APIHelper.ZKillAPI.GetCharacterKills(characterId); var characterStats = await APIHelper.ZKillAPI.GetCharacterStats(characterId); var zkillLosses = await APIHelper.ZKillAPI.GetCharacterLosses(characterId); var zkillLast = zkillContent.Count > 0 ? zkillContent[0] : null; var zLosslast = zkillLosses.Count > 0 ? zkillLosses[0] : new JsonClasses.ESIKill(); var km = zkillLast == null ? zLosslast : (zLosslast == null ? zkillLast : (zLosslast.killmail_time > zkillLast.killmail_time ? zLosslast : zkillLast)); JsonClasses.SystemName systemData = null; var lastShipType = LM.Get("Unknown"); if (km != null) { systemData = await APIHelper.ESIAPI.GetSystemData("Default", km.solar_system_id); if (km.victim != null && km.victim.character_id == characterId) { lastShipType = km.victim.ship_type_id.ToString(); } else if (km.victim != null) { foreach (var attacker in km.attackers) { if (attacker.character_id == characterId) { lastShipType = attacker.ship_type_id.ToString(); break; } } } } var lastShip = lastShipType == LM.Get("Unknown") ? null : await APIHelper.ESIAPI.GetTypeId("Default", lastShipType); var lastSeenTime = km?.killmail_time.ToString(SettingsManager.Settings.Config.ShortTimeFormat) ?? LM.Get("Unknown"); var allianceData = await APIHelper.ESIAPI.GetAllianceData("Default", characterData.alliance_id); var alliance = allianceData?.name ?? LM.Get("None"); var allianceTicker = allianceData != null ? $"[{allianceData?.ticker}]" : ""; var lastSeenSystem = systemData?.name ?? LM.Get("None"); var lastSeenShip = lastShip?.name ?? LM.Get("None"); var dangerous = characterStats.dangerRatio > 75 ? LM.Get("Dangerous") : LM.Get("Snuggly"); var gang = characterStats.gangRatio > 70 ? LM.Get("fleetChance") : LM.Get("soloChance"); var cynoCount = 0; var covertCount = 0; foreach (var kill in zkillLosses) { if (kill.victim.character_id == characterId) { foreach (var item in kill.victim.items) { if (item.item_type_id == 21096) { cynoCount++; } if (item.item_type_id == 28646) { covertCount++; } } } } var text1 = characterStats.dangerRatio == 0 ? LM.Get("Unavailable") : HelpersAndExtensions.GenerateUnicodePercentage(characterStats.dangerRatio); var text2 = characterStats.gangRatio == 0 ? LM.Get("Unavailable") : HelpersAndExtensions.GenerateUnicodePercentage(characterStats.gangRatio); var builder = new EmbedBuilder() .WithDescription( $"[zKillboard](https://zkillboard.com/character/{characterId}/) / [EVEWho](https://evewho.com/pilot/{HttpUtility.UrlEncode(characterData.name)})") .WithColor(new Color(0x4286F4)) .WithThumbnailUrl($"https://image.eveonline.com/Character/{characterId}_64.jpg") .WithAuthor(author => { author .WithName($"{characterData.name}"); }) .AddField(LM.Get("Additionaly"), "\u200b") .AddField($"{LM.Get("Corporation")}:", $"{corporationData.name}[{corporationData.ticker}]", true) .AddField($"{LM.Get("Alliance")}:", $"{alliance}{allianceTicker} ", true) .AddField($"{LM.Get("HasBeenSeen")}:", $"{lastSeenSystem}", true) .AddField($"{LM.Get("OnShip")}:", $"{lastSeenShip}", true) .AddField($"{LM.Get("Seen")}:", $"{lastSeenTime}", true) .AddField("\u200b", "\u200b") .AddField(LM.Get("CommonCyno"), $"{cynoCount}", true) .AddField(LM.Get("CovertCyno"), $"{covertCount}", true) .AddField(LM.Get("Dangerous"), $"{text1}{Environment.NewLine}{Environment.NewLine}**{dangerous} {characterStats.dangerRatio}%**", true) .AddField(LM.Get("FleetChance2"), $"{text2}{Environment.NewLine}{Environment.NewLine}**{characterStats.gangRatio}% {gang}**", true); var embed = builder.Build(); await APIHelper.DiscordAPI.SendMessageAsync(channel, "", embed).ConfigureAwait(false); await LogHelper.LogInfo($"Sending {context.Message.Author} Character Info Request", LogCat.CharSearch).ConfigureAwait(false); await Task.CompletedTask; }
public async Task <bool> Refresh(string reason, JsonZKill.Killmail kill) { if (killmailID > 0) { return(true); } try { killmailID = kill.killmail_id; killTime = kill.killmail_time.ToString(SettingsManager.Settings.Config.ShortTimeFormat); victimShipID = kill.victim.ship_type_id; value = kill.zkb.totalValue; victimCharacterID = kill.victim.character_id; victimCorpID = kill.victim.corporation_id; victimAllianceID = kill.victim.alliance_id; attackers = kill.attackers; finalBlowAttacker = attackers.FirstOrDefault(a => a.final_blow); finalBlowAttackerCharacterId = finalBlowAttacker.character_id; attackerShipID = finalBlowAttacker?.ship_type_id ?? 0; finalBlowAttackerCorpId = finalBlowAttacker?.corporation_id ?? 0; finalBlowAttackerAllyId = finalBlowAttacker?.alliance_id ?? 0; isNPCKill = kill.zkb.npc; systemId = kill.solar_system_id; rSystem = await APIHelper.ESIAPI.GetSystemData(reason, systemId); if (rSystem == null) { //ESI fail - check back later return(false); } rVictimCorp = await APIHelper.ESIAPI.GetCorporationData(reason, victimCorpID); rAttackerCorp = finalBlowAttackerCorpId > 0 ? await APIHelper.ESIAPI.GetCorporationData(reason, finalBlowAttackerCorpId) : null; rVictimAlliance = victimAllianceID != 0 ? await APIHelper.ESIAPI.GetAllianceData(reason, victimAllianceID) : null; rAttackerAlliance = finalBlowAttackerAllyId > 0 ? await APIHelper.ESIAPI.GetAllianceData(reason, finalBlowAttackerAllyId) : null; sysName = rSystem.name == rSystem.system_id.ToString() ? "Abyss" : rSystem.name; var rConst = rSystem != null ? await APIHelper.ESIAPI.GetConstellationData(reason, rSystem.constellation_id) : null; var rRegion = rConst != null ? await APIHelper.ESIAPI.GetRegionData(reason, rConst.region_id) : null; rVictimShipType = await APIHelper.ESIAPI.GetTypeId(reason, victimShipID); rAttackerShipType = await APIHelper.ESIAPI.GetTypeId(reason, attackerShipID); rVictimCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, victimCharacterID); rAttackerCharacter = await APIHelper.ESIAPI.GetCharacterData(reason, finalBlowAttacker?.character_id); systemSecurityStatus = Math.Round(rSystem.security_status, 1).ToString("0.0"); dic = new Dictionary <string, string> { { "{shipID}", victimShipID.ToString() }, { "{shipType}", rVictimShipType?.name }, { "{attackerShipID}", attackerShipID.ToString() }, { "{attackerShipType}", rAttackerShipType?.name }, { "{iskValue}", value.ToString("n0") }, { "{iskFittedValue}", kill?.zkb?.fittedValue.ToString("n0") ?? "0" }, { "{systemName}", sysName }, { "{constName}", rConst?.name }, { "{regionName}", rRegion?.name }, { "{systemSec}", systemSecurityStatus }, { "{victimName}", rVictimCharacter?.name }, { "{victimCorpName}", rVictimCorp?.name }, { "{victimCorpTicker}", rVictimCorp?.ticker }, { "{victimAllyName}", rVictimAlliance?.name }, { "{victimAllyTicker}", rVictimAlliance == null ? null : $"<{rVictimAlliance.ticker}>" }, { "{victimAllyOrCorpName}", rVictimAlliance?.name ?? rVictimCorp?.name }, { "{victimAllyOrCorpTicker}", rVictimAlliance?.ticker ?? rVictimCorp?.ticker }, { "{attackerName}", rAttackerCharacter?.name }, { "{attackerCorpName}", rAttackerCorp?.name }, { "{attackerCorpTicker}", rAttackerCorp?.ticker }, { "{attackerAllyTicker}", rAttackerAlliance == null ? null : $"<{rAttackerAlliance.ticker}>" }, { "{attackerAllyName}", rAttackerAlliance?.name }, { "{attackerAllyOrCorpName}", rAttackerAlliance?.name ?? rAttackerCorp?.name }, { "{attackerAllyOrCorpTicker}", rAttackerAlliance?.ticker ?? rAttackerCorp?.ticker }, { "{attackersCount}", attackers.Length.ToString() }, { "{kmId}", killmailID.ToString() }, { "{timestamp}", killTime }, { "{isLoss}", "false" }, { "{isNpcKill}", isNPCKill.ToString() ?? "false" }, { "{isSoloKill}", kill?.zkb?.solo.ToString() ?? "false" }, { "{isAwoxKill}", kill?.zkb?.awox.ToString() ?? "false" }, }; return(true); } catch (Exception ex) { killmailID = 0; await LogHelper.LogEx("refresh ex", ex, LogCat.KillFeed); return(false); } }