public static async Task CleanUpFissures() { var warjson = GetWarframeInfo(); var wardata = Warframe.FromJson(warjson); var thefissures = wardata.ActiveMissions; List <string> knownFis = new List <string>(); List <string> fisList = new List <string>(); foreach (var t in thefissures) { knownFis.Add(t.Id.Oid); } var accounts = DbStorage.GetDb(); foreach (var guild in accounts) { foreach (var t in guild.Fissures.KnownFissures) { if (!knownFis.Contains(t)) { fisList.Add(t); } } var account = DbStorage.GetGuildInfo(guild.Guild); foreach (var t in fisList) { account.Fissures.KnownFissures.Remove(t); } DbStorage.UpdateDb(guild.Guild, guild); } await Task.Delay(1000); }
public static string CetusTimeCheck() { var warframe = Warframe.FromJson(Utilities.GetWarframeInfo()); var checkFissAlerts = warframe.SyndicateMissions; var expiretime = ""; foreach (var syn in checkFissAlerts) { if (syn.Tag == "CetusSyndicate") { expiretime = syn.Expiry.Date.NumberLong; } } DateTimeOffset oldtime = DateTimeOffset.FromUnixTimeMilliseconds(Int64.Parse(expiretime)); var newtime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); DateTimeOffset newexptime = DateTimeOffset.FromUnixTimeMilliseconds(newtime); var blah = newexptime.Subtract(oldtime); var stringtime = blah.TotalMinutes.ToString(); var strlen = stringtime.Length; var mystr = stringtime.Right(strlen - 1); mystr = mystr.Split('.')[0]; if (!String.IsNullOrEmpty(mystr) && Int64.Parse(mystr) > 50) { long timeremain = Int64.Parse(mystr) - 50; return("daytime"); } if (!String.IsNullOrEmpty(mystr)) { return("nighttime"); } return("error"); }
public static string GetCetusTime() { var json = GetWarframeInfo(); if (String.IsNullOrEmpty(json)) { return("error"); } var warframe = Warframe.FromJson(json); var checkFissAlerts = warframe.SyndicateMissions; var expiretime = ""; foreach (var syn in checkFissAlerts) { if (syn.Tag == "CetusSyndicate") { expiretime = syn.Expiry.Date.NumberLong; } } #pragma warning disable IDE0018 // Inline variable declaration long ignoreMe; #pragma warning restore IDE0018 // Inline variable declaration if (!Int64.TryParse(expiretime, out ignoreMe)) { return("125"); } DateTimeOffset oldtime = DateTimeOffset.FromUnixTimeMilliseconds(Int64.Parse(expiretime)); var newtime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(); DateTimeOffset newexptime = DateTimeOffset.FromUnixTimeMilliseconds(newtime); var blah = newexptime.Subtract(oldtime); var stringtime = blah.TotalMinutes.ToString(); var strlen = stringtime.Length; var mystr = stringtime.Right(strlen - 1); mystr = mystr.Split('.')[0]; return(mystr); }
public static async Task CleanUpAlerts() { var warjson = GetWarframeInfo(); var wardata = Warframe.FromJson(warjson); var theAlerts = wardata.Alerts; List <string> knownAlerts = new List <string>(); List <string> alertList = new List <string>(); foreach (var t in theAlerts) { knownAlerts.Add(t.Id.Oid); } var accounts = DbStorage.GetDb(); foreach (var guild in accounts) { foreach (var t in guild.Alerts.KnownAlerts) { if (!knownAlerts.Contains(t)) { alertList.Add(t); } } var account = DbStorage.GetGuildInfo(guild.Guild); foreach (var t in alertList) { account.Alerts.KnownAlerts.Remove(t); } DbStorage.UpdateDb(account.Guild, account); } await Task.Delay(1000); }
/* save this for later * if (Utilities.CetusTimeCheck() == "nighttime") * { * foreach (var accounts in guildAccounts) * { * if (accounts.CetusTimeAlerted) * { * return; * } * * if (accounts.CetusTime) * { * var account = UserAccounts.UserAccounts.GetAccount(accounts.Guild); * account.CetusTimeAlerted = true; * UserAccounts.UserAccounts.SaveAccounts(); * await Misc.SendMessageChannel(accounts.AlertsChannel, $"**It is now nighttime!**"); * * } * }*/ private static async Task CheckInvasionRewards() { bool foundrewards = false; var apiresponse = Utilities.GetWarframeInfo(); if (string.IsNullOrEmpty(apiresponse)) { return; } var invasions = Warframe.FromJson(apiresponse); var invasionRewards = invasions.Invasions; var wfSettings = DbStorage.GetDb(); var embed = new EmbedBuilder(); string atkReward = ""; string defReward = ""; bool alerted = false; foreach (var reward in invasionRewards) { if (reward.Completed) { return; } if (reward.AttackerReward.AnythingArray == null) { atkReward = "Nothing"; } else if (reward.AttackerReward.ErReward == null) { atkReward = "Nothing"; } else { atkReward = Utilities.ReplaceRewardInfo(reward.AttackerReward.ErReward.CountedItems[0].ItemType); } if (reward.AttackerReward.AnythingArray == null) { defReward = Utilities.ReplaceRewardInfo(reward.DefenderReward.CountedItems[0].ItemType); } foreach (var guild in wfSettings) { var curtime = DateTime.Now; var announcedtime = guild.TimeChecked; var checktime = curtime.Subtract(announcedtime).TotalMinutes; if (checktime < guild.AlertDelay ) // check and see how long its been since last alerted ( in minutes ) { alerted = true; } if (guild.Rewards.WantedRewards.Contains(atkReward)) { embed.AddField($"{atkReward} Found!", $"On {Utilities.ReplaceInfo(reward.Node)} Faction: {reward.AttackerMissionInfo.Faction} vs {reward.DefenderMissionInfo.Faction}"); foundrewards = true; } if (guild.Rewards.WantedRewards.Contains(defReward)) { embed.AddField($"{defReward} Found!", $"On {Utilities.ReplaceInfo(reward.Node)} Faction: {reward.DefenderMissionInfo.Faction} vs {reward.AttackerMissionInfo.Faction}"); foundrewards = true; } if (alerted == false) { var thetime = DateTime.Now; //var accounts = UserAccounts.UserAccounts.GetAccount(guild.Guild); guild.TimeChecked = thetime; DbStorage.UpdateDb(guild.Guild, guild); } if ((foundrewards) && (alerted == false)) { embed.WithTitle("Rewards Alert"); embed.WithDescription("Rewards wanted were found in the following invasions."); if (Global.Client.GetChannel(guild.AlertsChannel) is IMessageChannel chnl) { await chnl.SendMessageAsync("", false, embed.Build()); } } } } await Task.Delay(1); }
private static async Task CheckNews() { var json = Utilities.GetWarframeInfo(); if (string.IsNullOrEmpty(json)) { return; } var wfSet = DbStorage.GetDb(); //GuildAccounts.FromJson(wfNfo); var warframe = Warframe.FromJson(json); var news = warframe.Events; var embed = new EmbedBuilder(); foreach (var guild in wfSet) { if (!guild.NotifyNews) { continue; } foreach (var n in news) { var account = DbStorage.GetGuildInfo(guild.Guild); if (guild.News.KnownNews.Contains(n.Id.Oid)) { continue; } var curtime = Utilities.TimeSince(n.Date.Date.NumberLong); var time = Int64.Parse(curtime); if (time <= 24) { for (int i = 0; i < n.Messages.Count; i++) { if (guild.News.KnownNews.Contains(n.Id.Oid)) { continue; } if (n.Messages[i].LanguageCode == "en") { var newsMsg = n.Messages[i].MessageMessage; var newsLink = n.Prop.AbsoluteUri; embed.AddField($"{newsMsg}: ", $"{newsLink}"); account.News.KnownNews.Add(n.Id.Oid); DbStorage.UpdateDb(guild.Guild, account); break; } } } if (embed.Fields.Count == 0) { continue; } embed.WithTitle("News Alerts"); embed.WithFooter("warframe alert ver 1.0", "http://3rdshifters.org/headerLogo.png"); embed.WithColor(new Color(188, 66, 244)); var chnl = Global.Client.GetChannel(guild.AlertsChannel) as IMessageChannel; if (chnl != null) { await chnl.SendMessageAsync("", false, embed.Build()); } } } }
/* broken, will fix when they retrun * public static async Task CheckForAcolytes() * * { * var warframe = Warframe.FromJson(Utilities.GetWarframeInfo()); * var activeAcolytes = warframe.PersistentEnemies; * * for (int i = 0; i < activeAcolytes.Count; i++) * { * ulong id = 471312780079923210; * if (activeAcolytes[i].AgentType == "") break; * string acolytename = warframe.PersistentEnemies[i].LastDiscoveredLocation; * if (String.IsNullOrEmpty(acolytename)) return; * { * await Misc.SendMessageChannel(id, "Acolyte Found!"); * break; * * } * } * } */ private static async Task CheckFissures() { var guildAccounts = DbStorage.GetDb(); var json = Utilities.GetWarframeInfo(); if (string.IsNullOrEmpty(json)) { return; } var warframe = Warframe.FromJson(json); var checkFissAlerts = warframe.ActiveMissions; int dacount = 0; List <string> fisList = new List <string>(); foreach (var guild in guildAccounts) // cycle thru each guild { var foundcount = 1; //variable to label each found fissure in numeric order var embed = new EmbedBuilder(); var lastmissioniD = ""; var fissureFound = false; var alerted = false; // initilaize so we can set it true/false later if the guild has been alerted var curtime = DateTime.Now; var announcedtime = guild.TimeChecked; var checktime = curtime.Subtract(announcedtime).TotalMinutes; if (checktime < guild.AlertDelay) // check and see how long its been since last alerted ( in minutes ) { alerted = true; } foreach (var t in checkFissAlerts) { if (guild.Fissures.WantedFissures.Count < 1) { break; } foreach (var wantedfis in guild.Fissures.WantedFissures) { var curFissure = Utilities.ReplaceInfo(t.MissionType).ToLower(); var wantedFissure = wantedfis.ToLower(); if (curFissure == wantedFissure) { if (guild.Fissures.KnownFissures != null) { foreach (var t1 in guild.Fissures.KnownFissures) { if (t1 == t.Id.Oid) { goto thenext; } } } if (t.Id.Oid == lastmissioniD) { continue; } var exptime = Utilities.ExpireFisTime(t.Expiry.Date.NumberLong); embed.WithDescription($"{Utilities.FissureLink(curFissure)}"); embed.AddField($"Found Fissure **{foundcount}**", $"**{Utilities.ReplaceInfo(t.Node)}** | **Relic** **{Utilities.ReplaceInfo(t.Modifier)}** \n Expires in {exptime}", true); foundcount = foundcount + 1; fisList.Add(t.Id.Oid); lastmissioniD = t.Id.Oid; fissureFound = true; thenext :; } } } if (fissureFound) { var chnl = Global.Client.GetChannel(guild.AlertsChannel) as IMessageChannel; embed.WithTitle("**Fissure Alerts**"); embed.WithFooter("warframe alert ver 1.0", "http://3rdshifters.org/headerLogo.png"); embed.WithColor(new Color(188, 66, 244)); if (alerted == false) { if (chnl != null) { await chnl.SendMessageAsync("", false, embed.Build()); } var thetime = DateTime.Now; var accounts = DbStorage.GetGuildInfo(guild.Guild); accounts.TimeChecked = thetime; foreach (var t in fisList) { accounts.Fissures.KnownFissures.Add(t); } DbStorage.UpdateDb(accounts.Guild, accounts); } } dacount = dacount + 1; await Utilities.CleanUpFissures(); } }
private static async Task CheckAlertRewards(ulong id, ulong alertchan) { var json = Utilities.GetWarframeInfo(); if (string.IsNullOrEmpty(json)) { return; } var warframe = Warframe.FromJson(json); var checkAlerts = warframe.Alerts; var wfSettings = DbStorage.GetDb(); List <string> alertList = new List <string>(); int dacount = 0; var embed = new EmbedBuilder(); foreach (var alert in checkAlerts) { foreach (var account in wfSettings) { for (int i = 0; i < account.Rewards.WantedRewards.Count; i++) { var reward = account.Rewards.WantedRewards[i]; if (reward == "") { continue; } if (alert.MissionInfo.MissionReward.Items == null) { continue; } var curreward = Utilities.ReplaceRewardInfo(alert.MissionInfo.MissionReward.Items[0]).ToLower(); var curtime = DateTime.Now; var announcedtime = account.AlertTimeChecked; var checktime = curtime.Subtract(announcedtime).TotalMinutes; if (checktime < account.AlertDelay) { continue; } if (curreward.Contains(reward)) { if (account.Alerts.KnownAlerts.Contains(alert.Id.Oid)) { goto nextalert; } embed.WithFooter("warframe alert ver 1.0", "http://3rdshifters.org/headerLogo.png"); embed.WithColor(new Color(188, 66, 244)); //alertList.Add(alert.Id.Oid); embed.WithTitle($"{curreward} has been found!"); embed.AddField($"Location info:\n", $"{Utilities.ReplaceInfo(alert.MissionInfo.Location)}\n {Utilities.ReplaceInfo(alert.MissionInfo.MissionType)}\n {Utilities.ReplaceInfo(alert.MissionInfo.Faction.ToString())}"); embed.AddField("Expires: ", $"{Utilities.ExpireFisTime(alert.Expiry.Date.NumberLong)}"); if (Global.Client.GetChannel(account.AlertsChannel) is IMessageChannel chnl) { await chnl.SendMessageAsync("", false, embed.Build()); } var thetime = DateTime.Now; var accounts = DbStorage.GetGuildInfo(account.Guild); accounts.AlertTimeChecked = thetime; accounts.Alerts.KnownAlerts.Add(alert.Id.Oid); DbStorage.UpdateDb(accounts.Guild, accounts); nextalert :; } dacount = dacount + 1; } } } }
private static async Task AlertsNotify() { var alertCount = 1; var lastalert = ""; var curreward = ""; var embed = new EmbedBuilder(); var json = Utilities.GetWarframeInfo(); if (string.IsNullOrEmpty(json)) { return; } var warframe = Warframe.FromJson(json); var checkAlerts = warframe.Alerts; var wfSettings = DbStorage.GetDb(); List <string> knownalert = new List <string>(); foreach (var account in wfSettings) { if (account.NotifyAlerts == false) { continue; } var newAlert = false; foreach (var alert in checkAlerts) { var accounts = DbStorage.GetGuildInfo(account.Guild); if (lastalert == alert.Id.Oid) { continue; } if (!account.Alerts.KnownAlerts.Contains(alert.Id.Oid)) { lastalert = alert.Id.Oid; accounts.Alerts.KnownAlerts.Add(alert.Id.Oid); if (alert.MissionInfo.MissionReward.Items == null) { curreward = "None"; } var credits = alert.MissionInfo.MissionReward.Credits; if (alert.MissionInfo.MissionReward.Items != null) { curreward = Utilities.ReplaceRewardInfo(alert.MissionInfo.MissionReward.Items[0]).ToLower(); } if (alert.MissionInfo.MissionReward.CountedItems != null) { var craftitem = Utilities.ReplaceRewardInfo(alert.MissionInfo.MissionReward.CountedItems[0].ItemType); var itemcount = $"{alert.MissionInfo.MissionReward.CountedItems[0].ItemCount} of {craftitem} "; curreward = itemcount; } var curtime = DateTime.Now; var announcedtime = account.AlertTimeChecked; var checktime = curtime.Subtract(announcedtime).TotalMinutes; if (checktime < account.AlertDelay) { continue; } embed.WithTitle($"Tenno, a new alert has been posted!"); embed.WithColor(new Color(188, 66, 244)); embed.AddField($"**Alert** {alertCount}\n**Reward**: ", $"Items: **{curreward}**\nCredits: **{credits}**\nLocation info:\n{Utilities.ReplaceInfo(alert.MissionInfo.Location)}\nType:\n{Utilities.ReplaceInfo(alert.MissionInfo.MissionType)}\nFaction:\n{Utilities.ReplaceInfo(alert.MissionInfo.Faction.ToString())}\nExpires:\n{Utilities.ExpireFisTime(alert.Expiry.Date.NumberLong)}"); alertCount = alertCount + 1; newAlert = true; var thetime = DateTime.Now; accounts.AlertTimeChecked = thetime; DbStorage.UpdateDb(accounts.Guild, accounts); } } if (newAlert) { embed.WithFooter("warframe alert ver 1.0", "http://3rdshifters.org/headerLogo.png"); embed.WithColor(new Color(188, 66, 244)); if (Global.Client.GetChannel(account.AlertsChannel) is IMessageChannel chnl) { await chnl.SendMessageAsync("", false, embed.Build()); } await Utilities.CleanUpAlerts(); } } }