public async Task AddTranslation(string target, string translation) { translations[target] = translation; JsonStorage.SerializeObjectToFile(translations, "translations.json"); RespondAsync($"I will now translate {target} to {translation}"); }
public Translation() { if (!File.Exists("translations.json")) { translations = new Dictionary <string, string>(); JsonStorage.SerializeObjectToFile(translations, "translations.json"); } else { translations = JsonStorage.DeserializeObjectFromFile <Dictionary <string, string> >("translations.json"); } }
public void Save() { JsonStorage.SerializeObjectToFile(this, "events.json").Wait(); }
public async Task Broadcast(List <EqList> data, bool force = false) { try { Dictionary <ulong, EmergencyQuestConfig> check = new Dictionary <ulong, EmergencyQuestConfig>(config.ServerSettings); Dictionary <string, string> translations; if (!File.Exists("quests.json")) { //Console.WriteLine("Creating cache"); JsonStorage.SerializeObjectToFile(data, "quests.json"); //Console.WriteLine("Created cache; returning..."); return; } if (!File.Exists("translations.json")) { translations = new Dictionary <string, string>(); JsonStorage.SerializeObjectToFile(translations, "translations.json"); } else { translations = JsonStorage.DeserializeObjectFromFile <Dictionary <string, string> >("translations.json"); } //Console.WriteLine("Reading cache..."); var cache = JsonStorage.DeserializeObjectFromFile <List <EqList> >("quests.json"); if (data.First().Time != cache.First().Time || force) { //if (!force) // Console.WriteLine("New data!"); foreach (var server in check) { //Console.WriteLine($"Server setting loop {server.Key}"); foreach (var setting in server.Value.ChannelSettings) { //Console.WriteLine($"Channel setting loop {setting.Key}"); var channel = (ISocketMessageChannel)client.GetChannel(setting.Key); if (channel == null) { //Console.WriteLine("null channel"); continue; // TODO: MARK CHANNEL FOR REMOVAL } var eqs = data.First().Quests.Where(x => setting.Value.Contains(x.Ship)).ToList(); if (eqs.Count() == 0) { //Console.WriteLine("No matched ships"); continue; } StringBuilder output = new StringBuilder(); output.AppendLine($"**Upcoming EQ in {(data.First().StartTime - DateTimeOffset.Now).Minutes} minutes!** ({data.First().StartTime.ToLocalTime().ToString("t")} EST)"); if (data.First().Quests.Count() == 10 && data.First().Quests.All(x => x.Name == data.First().Quests.First().Name)) { output.AppendLine($"`ALL SHIPS:` {data.First().Quests.First().Name} ({data.First().Quests.First().JpName})"); } else { var jpComparer = StringComparer.Create(new CultureInfo("ja-JP"), true); var enComparer = StringComparer.Create(new CultureInfo("en-US"), true); foreach (var shipQuest in eqs) { output.Append($"`Ship {shipQuest.Ship.ToString("00")}:` "); var key = translations.Keys.FirstOrDefault(x => { if (jpComparer.Compare(shipQuest.Name, x) == 0) { return(true); } else if (enComparer.Compare(shipQuest.Name, x) == 0) { return(true); } else { return(false); } }); if (key != null) { output.Append($"{translations[key]} ({shipQuest.Name})"); } else { output.Append(shipQuest.Name); if (jpComparer.Compare(shipQuest.Name, shipQuest.JpName) == 0) { output.Append($" ({shipQuest.JpName})"); } } output.AppendLine(); //{shipQuest.Name}{((shipQuest.Name != shipQuest.JpName) ? $" ({shipQuest.JpName})" : "")} } } Console.WriteLine(output.ToString()); await channel.SendMessageAsync(output.ToString()); } } if (data.First().Time != cache.First().Time) { //Console.WriteLine("Updating cache..."); JsonStorage.SerializeObjectToFile(data, "quests.json"); //Console.WriteLine("Cache updated"); } } //else //{ // if (!force) // Console.WriteLine("Time is matched with cache, skipping"); //} } catch (Exception ex) { Console.WriteLine($"Error while sending broadcast!\n{ex.Message}\n{ex.StackTrace ?? "No stack trace"}"); } //Console.WriteLine("Returnning to previous context"); }