public void UpdateOnMessage(string from, string message) { var user = _userDatabase.GetUser(from); if (message.Contains("<3")) { user.HeartCount++; } if (message.Contains("Kappa")) { user.KappaCount++; } user.MessageCount++; user.LastSpoke = DateTime.Now; user.CharacterCount += message.Length; //Gets the game currently being streamed. var stream = _twitch.GetTwitchStream(Chat.MainChannel.Substring(1)); if (stream != null) { //update game stats var game = _gameDatabase.GetGame(stream.game); game.MessageCount++; if ((DateTime.Now + TimeSpan.FromHours(2)).Date != (game.LastPlayed + TimeSpan.FromHours(2)).Date) { game.DaysPlayed++; game.LastPlayed = DateTime.Now; } // case where game played changes while person is still in channel (change without join event) if (user.LastGame.CompareTo(stream.game) != 0) { game.UniqueMessageCount++; game.VisitCount++; user.UniqueMessageFlag = false; } // case where user speaks for the first time after join event in a new game if (user.UniqueMessageFlag) { game.UniqueMessageCount++; user.UniqueMessageFlag = false; } _gameDatabase.Update(stream.game, game); user.LastGame = stream.game; } // write to the database _userDatabase.Update(from, user); }
private User NewUser(string username) { var user = new User(username); user.FirstSeen = DateTime.Now; var stream = _twitch.GetTwitchStream(Chat.MainChannel.Substring(1)); if (stream != null) { user.FirstGame = stream.game; } var data = user.ToDictionary(); data.Add("user", user.Name); _db.Insert("users", data); return(user); }