private void Discord_MessageReceived(object sender, MessageEventArgs e) { string firstWord = Regex.Match(e.Message.Text, @"^\S+\b").Value.ToLower(); UserCommand foundCommand = MainWindow.colBotCommands.FirstOrDefault(x => x.Command == firstWord); if (foundCommand != null) { //foundCommand.ExecuteCommand(new IrcMessage(e.User.Name + "@Discord", e.Message.Text)); foundCommand.ExecuteCommandDiscord(e.Message); } else { //BotCommands.RunBotCommand(firstWord, new IrcMessage(e.User.Name + "@Discord", e.Message.Text)); BotCommands.RunBotCommandDiscord(firstWord, e.Message); } if (e.Channel.IsPrivate) { if (e.Message.Text.Split(' ')[0] == "confirm" && e.Message.Text.Split(' ').Length == 2) { Discord.User confirm = e.User; Models.Channel target = client.GetChannel(e.Message.Text.Split(' ')[1]); string id = target.Game; if (id == confirm.Id.ToString()) { Viewer vwr = colDatabase.FirstOrDefault(x => x.UserName.ToLower() == target.Name.ToLower()); vwr.DiscordID = confirm.Id.ToString(); DatabaseUtils.UpdateViewer(vwr); } } } }
// For running in seperate thread with auto sleep balancing internal void Run() { // Timestamp of start of the thread activated = DateTime.UtcNow; while (true) { // Sleep for 60sec auto compensated with calculating and starting tasks. Thread.Sleep(Convert.ToInt32(60000 - Math.Floor(DateTime.UtcNow.Subtract(activated).TotalMilliseconds % 60000))); // Get total time difference in seconds secondsPassed = Math.Floor(DateTime.UtcNow.Subtract(activated).TotalSeconds); // Activate task point distribution if (secondsPassed % intervalPoints == 0) { new Task(() => { Trace.WriteLine(DateTime.UtcNow.ToString("o") + " -> Executing Point interval set to: " + intervalPoints); foreach (Viewer v in MainWindow.colViewers) { v.Points += 10; DatabaseUtils.UpdateViewer(v); } }).Start(); } // Activate task save if (secondsPassed % intervalSave == 0) { new Task(() => { Trace.WriteLine(DateTime.UtcNow.ToString("o") + " -> Executing Save interval set to: " + intervalSave); DatabaseUtils.UpdateAllViewers(); }).Start(); } } }
/// <summary> /// Add the viewer as Viewer to the viewers collection. /// Creates a new Viewer and adds it to the database if needed. /// </summary> /// <param name="viewerName">Viewers Twitch username to add</param> public static void AddToViewersCol(string viewerName) { // First check if viewer is not already in the viewers list var isInViewList = MainWindow.colViewers.FirstOrDefault(x => x.UserName == viewerName); if (isInViewList == null) { // Check if viewer exists in database to refer to var isInDatabase = MainWindow.colDatabase.FirstOrDefault(x => x.UserName == viewerName); if (isInDatabase != null) { // is in database MainWindow.colViewers.Add(isInDatabase); DatabaseUtils.UpdateViewer(isInDatabase); } else { // is not in database Viewer newViewer = new Viewer(viewerName); MainWindow.colDatabase.Add(newViewer); MainWindow.colViewers.Add(newViewer); DatabaseUtils.AddViewer(newViewer); } } }