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}")); } }
/// <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); }