Ejemplo n.º 1
0
        public async Task AddTranslation(string target, string translation)
        {
            translations[target] = translation;

            JsonStorage.SerializeObjectToFile(translations, "translations.json");

            RespondAsync($"I will now translate {target} to {translation}");
        }
Ejemplo n.º 2
0
 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");
     }
 }
Ejemplo n.º 3
0
 public void Save()
 {
     JsonStorage.SerializeObjectToFile(this, "events.json").Wait();
 }
Ejemplo n.º 4
0
        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");
        }