static void Main(string[] args) { using (var streamReader = new StreamReader("config.yaml")) { var deserializer = new YamlDotNet.Serialization.Deserializer(); Config = deserializer.Deserialize(streamReader); Console.WriteLine("Successfully loaded configuration."); } new Thread(() => { try { DiscordSession.Connect(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }).Start(); new Thread(() => { try { WikiaSession.GetChatInfo(); WikiaSession.ConnectToChat(); } catch (Exception e) { Console.WriteLine(e.ToString()); } }).Start(); new Thread(() => { int time = 1000 * 60 * int.Parse(Config["restart_timer"]); Thread.Sleep(time); Restart(); }).Start(); }
static async Task ChatEvent(dynamic responseObject, dynamic dataObject) { if (((string)dataObject["attrs"]["name"]).ToLower() != botName.ToLower()) { var name = (string)dataObject["attrs"]["name"]; string text = ""; if (dataObject["attrs"]["text"] != null) { text = ParseClientSideMessageMarkup((string)dataObject["attrs"]["text"]); } switch ((string)responseObject[1]["event"]) { case "chat:add": Tools.Log("Wikia", $"{name}: {text}"); await DiscordSession.SendMessage($"**{name}**: {text}"); break; case "join": Tools.Log("Wikia", $"{name} has joined the chat."); await DiscordSession.SendMessage($"**{name}** has joined the chat."); break; case "logout": Tools.Log("Wikia", $"{name} has left the chat."); await DiscordSession.SendMessage($"**{name}** has left the chat."); break; case "part": Tools.Log("Wikia", $"{name} has left the chat."); await DiscordSession.SendMessage($"**{name}** has left the chat."); break; } } }
private static async Task StartAsync(string[] args) { using (var fileStream = new FileStream("config.yaml", FileMode.Open)) using (var streamReader = new StreamReader(fileStream)) { var deserializer = new YamlDotNet.Serialization.Deserializer(); config = deserializer.Deserialize(streamReader); Console.WriteLine("Successfully loaded configuration."); } bool useTimestamp = false; try { useTimestamp = bool.TryParse(config["log_timestamp"], out bool value) && value; } catch (KeyNotFoundException) { } Tools.InitLogging(useTimestamp); await WikiaSession.Init((string)config["wikia_name"], (string)config["wikia_username"], (string)config["wikia_password"]); await WikiaSession.GetChatInfo((string)config["wikia_username"]); string botToken = config["discord_bot_token"]; ulong discordChannel = ulong.Parse(config["discord_channel"]); string wikiaName = config["wikia_name"]; await DiscordSession.Init(botToken, discordChannel, wikiaName); cts = new CancellationTokenSource(TimeSpan.FromMinutes(int.Parse(config["restart_timer"]))); var completionSource = new TaskCompletionSource <object>(); cts.Token.Register(() => completionSource.TrySetCanceled()); await Task.WhenAny(WikiaSession.ConnectToChat(), completionSource.Task); }