public ActionResult CreateUser([FromBody] RouletteUser user)
 {
     try
     {
         context.RouletteUser.Add(user);
         context.SaveChanges();
         return(Ok($"The user {user.UserName} with ID: {user.CodUser} has been created."));
     }
     catch (Exception ex)
     {
         return(StatusCode(500, $"The server encountered an internal error ad was unable to complete your request. {ex.Message} {ex.StackTrace}"));
     }
 }
Example #2
0
        /// <summary>
        /// Play a friendly game of Russian Roulette and risk chat privileges for stream currency
        /// </summary>
        /// <param name="chatter">User that sent the message</param>
        public async Task <DateTime> RussianRoulette(TwitchChatter chatter)
        {
            try
            {
                RouletteUser rouletteUser = _rouletteSingleton.RouletteUsers.FirstOrDefault(u => u.Username == chatter.Username);

                Random rnd    = new Random(DateTime.Now.Millisecond);
                int    bullet = rnd.Next(6); // between 0 and 5

                if (bullet == 0)             // user was shot
                {
                    if (rouletteUser != null)
                    {
                        _rouletteSingleton.RouletteUsers.Remove(rouletteUser);
                    }

                    if (_botConfig.Broadcaster.ToLower() == chatter.Username || chatter.Badges.Contains("moderator"))
                    {
                        _irc.SendPublicChatMessage($"Enjoy your 15 minutes without russian roulette @{chatter.DisplayName}");
                        return(DateTime.Now.AddMinutes(15));
                    }

                    _irc.SendChatTimeout(chatter.Username, 300); // 5 minute timeout
                    _irc.SendPublicChatMessage($"You are dead @{chatter.DisplayName}. Enjoy your 5 minutes in limbo (cannot talk)");
                    return(DateTime.Now.AddMinutes(5));
                }

                if (rouletteUser == null) // new roulette user
                {
                    rouletteUser = new RouletteUser()
                    {
                        Username = chatter.Username, ShotsTaken = 1
                    };
                    _rouletteSingleton.RouletteUsers.Add(rouletteUser);

                    _irc.SendPublicChatMessage($"@{chatter.DisplayName} -> 1/6 attempts...good luck Kappa");
                }
                else // existing roulette user
                {
                    if (rouletteUser.ShotsTaken < 6)
                    {
                        foreach (RouletteUser user in _rouletteSingleton.RouletteUsers)
                        {
                            if (user.Username == chatter.Username)
                            {
                                user.ShotsTaken++;
                                break;
                            }
                        }
                    }

                    if (rouletteUser.ShotsTaken == 6)
                    {
                        int funds = await _bank.CheckBalanceAsync(chatter.Username, _broadcasterInstance.DatabaseId);

                        int reward = 3000; // ToDo: Make roulette reward deposit config setting

                        if (funds > -1)
                        {
                            funds += reward; // deposit 500 stream currency
                            await _bank.UpdateFundsAsync(chatter.Username, _broadcasterInstance.DatabaseId, funds);
                        }
                        else
                        {
                            await _bank.CreateAccountAsync(chatter.Username, _broadcasterInstance.DatabaseId, reward);
                        }

                        _rouletteSingleton.RouletteUsers.RemoveAll(u => u.Username == chatter.Username);

                        _irc.SendPublicChatMessage($"Congrats on surviving russian roulette. Here's {reward} {_botConfig.CurrencyType}!");
                        return(DateTime.Now.AddMinutes(5));
                    }
                }
            }
            catch (Exception ex)
            {
                await _errHndlrInstance.LogError(ex, "MinigameFeature", "RussianRoulette(TwitchChatter)", false, "!roulette");
            }

            return(DateTime.Now);
        }
        public RouletteUser GetUser(int id)
        {
            RouletteUser user = context.RouletteUser.FirstOrDefault(u => u.CodUser == id);

            return(user);
        }