コード例 #1
0
        public async Task <IHttpActionResult> PutRate(int id, Rate rate)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != rate.Id)
            {
                return(BadRequest());
            }

            db.Entry(rate).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RateExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
コード例 #2
0
        public async Task <ActionResult <Currency> > PostTodoItem(Currency item)
        {
            _context.Currency.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetCurrency), new { id = item.Id }, item));
        }
        public async Task <ActionResult <Currency> > PostCurrencyInfo([FromForm] Currency currency)
        {
            currency.cashUSDValue = Math.Round(currency.cashValue *
                                               Convert.ToDouble(GetUpdatedCurrencyData(currencyURL, currencyURLParameters)), 2);
            currency.bitcoinUSDValue = Math.Round(Convert.ToDouble
                                                      (GetUpdatedCurrencyData(cryptocurrencyURL, cryptocurrencyURLParameters)), 2);
            currency.totalBitCoinValue       = Math.Round(currency.cashUSDValue / currency.bitcoinUSDValue, 2);
            currency.totalBitCoinPurchasable = Math.Floor(currency.totalBitCoinValue);

            _context.Currencies.Add(currency);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetSongs", new { currency.id }, currency));
        }
コード例 #4
0
        public async Task <IActionResult> ChooseCurrency(List <Currency> currencies)
        {
            foreach (var item in currencies)
            {
                if (item.Checked)
                {
                    Currency currency = await _context.Currencies.FirstAsync(value => value.CurrencyId == item.CurrencyId);

                    currency.Quantity = currency.Quantity + 1;
                    _context.Update(currency);
                    await _context.SaveChangesAsync();
                }
            }

            return(RedirectToAction("Index"));
        }
コード例 #5
0
 public Task AddAsync(Guid apiKey)
 {
     apiKeyDbSet.Add(new ApiKey {
         Value = apiKey
     });
     return(dbContext.SaveChangesAsync());
 }
コード例 #6
0
ファイル: Custommeme.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task CreateNewMeme(string name, [Remainder] string content)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var meme = db.Memes.Find(name);
                if (meme == null)
                {
                    await db.AddAsync(new Meme
                    {
                        Id      = name,
                        Content = content,
                        Owner   = Context.Message.Author.Id
                    });

                    await db.SaveChangesAsync();

                    await ReplyAsync($"Meme {name} created!");
                }
                else
                {
                    await ReplyAsync($"The name: {name} already exists, pick a different one!");
                }
            }
        }
コード例 #7
0
        public async Task CreateAccount()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }
            using (var db = new CurrencyContext())
            {
                await db.UserAccounts.AddAsync(new UserAccount
                {
                    Id        = Context.User.Id,
                    Balance   = 1000,
                    Inventory = new Dictionary <string, int>()
                });

                await db.Cooldowns.AddAsync(new Cooldowns
                {
                    Id       = Context.User.Id,
                    Collect  = new DateTime(),
                    Work     = new DateTime(),
                    Rob      = new DateTime(),
                    Robbed   = new DateTime(),
                    Roulette = new DateTime(),
                    Trivia   = new DateTime()
                });

                await db.SaveChangesAsync();
                await ReplyAsync("Account created!");
            }
        }
コード例 #8
0
 public async Task AddHistory(RequestHistory history)
 {
     using (CurrencyContext context = new CurrencyContext())
     {
         context.RequestHistory.Add(history);
         await context.SaveChangesAsync();
     }
 }
コード例 #9
0
        public Task AddRangeAsync(ExchangeRate[] exchangeRates)
        {
            exchangeRatesDbSet
            .UpsertRange(mapper.Map <Database.Entities.ExchangeRate[]>(exchangeRates))
            .On(entity => new { entity.Date, entity.Source, entity.Target })
            .NoUpdate();

            return(dbContext.SaveChangesAsync());
        }
コード例 #10
0
ファイル: Shop.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task Buy(string itemname, int quantity = 1)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (account != null && cooldowns != null)
                {
                    var item = db.Items.AsQueryable().Where(i => i.Id.ToLower() == itemname.ToLower()).FirstOrDefault();
                    if (item != null)
                    {
                        if (account.AddToInventory(item, quantity))
                        {
                            if (account.SubtractBalance(item.Price * quantity))
                            {
                                if (item.Id.ToLower() == "bitcoin_miner")
                                {
                                    cooldowns.Collect = new DateTime();
                                    db.Update(cooldowns);
                                }

                                db.Update(account);
                                await ReplyAsync("Item purchased!");
                            }
                            else
                            {
                                account.RemoveFromInventory(item, quantity);
                                db.Update(account);
                                await ReplyAsync("You can't afford that item!");
                            }

                            await db.SaveChangesAsync();
                        }
                        else
                        {
                            await ReplyAsync("You have reached the item limit for that item!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("Item was not found!");
                    }
                }
                else
                {
                    await ReplyAsync("You dont have an account yet, type $acc to create one!");
                }
            }
        }
コード例 #11
0
        //Invoked every 10 minutes
        //Gets new data from api, updates database and sends message to clients to update data on site
        private async void DoWork(object state)
        {
            using var scope = _scopeFactory.CreateScope();
            var dbContext =
                new CurrencyContext(
                    scope.ServiceProvider.GetRequiredService <DbContextOptions <CurrencyContext> >());

            var httpClient = _httpClientFactory.CreateClient("API Client");

            foreach (var currency in DropDownHelper.GetCurrenciesList())
            {
                var httpResponse = await httpClient.GetAsync("/latest?base=" + currency);

                if (!httpResponse.IsSuccessStatusCode)
                {
                    return;
                }

                var content = await httpResponse.Content.ReadAsStringAsync();

                var newModel = JsonConvert.DeserializeObject <CurrencyModel>(content);

                var oldModel = dbContext.Currency.FirstOrDefault(c =>
                                                                 c.CurrencyName == newModel.CurrencyName && c.RatesDate.Date == newModel.RatesDate.Date);

                if (oldModel != null)
                {
                    var oldExchangeRates = dbContext.ExchangeRates
                                           .Where(r => r.CurrencyId == oldModel.Id)
                                           .ToList();

                    dbContext.ExchangeRates.RemoveRange(oldExchangeRates);
                    oldModel.Rates = newModel.Rates;
                    dbContext.Currency.Update(oldModel);
                }
                else
                {
                    dbContext.Currency.Add(newModel);
                }
            }

            await dbContext.SaveChangesAsync();

            if (LiveRatesHub.ConnectedClients != null && LiveRatesHub.ConnectedClients.Count != 0)
            {
                await _hubContext.Clients.All.SendAsync("UpdateRates");
            }
        }
コード例 #12
0
ファイル: Income.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task Collect()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (account != null && cooldowns != null)
                {
                    if (account.Inventory.ContainsKey("bitcoin_miner"))
                    {
                        var collect         = cooldowns.Collect;
                        var cooldownHandler = new CooldownHandler();
                        var isCooledDown    = cooldownHandler.IsCooledDown(collect, "h", _collectCooldown);
                        if (isCooledDown)
                        {
                            var collected = _collectAmount * account.Inventory["bitcoin_miner"];
                            account.AddBalance(collected);
                            cooldowns.Collect = DateTime.Now;

                            db.Update(account);
                            db.Update(cooldowns);
                            await db.SaveChangesAsync();
                            await ReplyAsync($"You've collected {collected} Kredits!");
                        }
                        else
                        {
                            var cooldown = cooldownHandler.GetDifference(DateTime.Now, collect.AddHours(_collectCooldown));
                            await ReplyAsync($"You can only collect once every {_collectCooldown} hours!\n" +
                                             $"You still have to wait for {cooldown}!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont generate any passive income yet! Buy a device from the store does!");
                    }
                }
                else
                {
                    await ReplyAsync("You dont have an account yet, type $acc to create one!");
                }
            }
        }
コード例 #13
0
ファイル: Custommeme.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task DeleteMeme([Remainder] string name)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var meme = db.Memes.Find(name);
                if (meme != null)
                {
                    db.Remove(meme);
                    await db.SaveChangesAsync();

                    await ReplyAsync($"Removed '{name}'!");
                }
                else
                {
                    await ReplyAsync($"Meme '{name}' does not exist!");
                }
            }
        }
コード例 #14
0
ファイル: Custommeme.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task EditMeme(string name, [Remainder] string content)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var meme = db.Memes.Find(name);
                if (meme != null)
                {
                    meme.Content = content;
                    db.Update(meme);
                    await db.SaveChangesAsync();

                    await ReplyAsync($"Meme '{name}' was updated!");
                }
                else
                {
                    await ReplyAsync($"Meme '{name}' does not exist!");
                }
            }
        }
コード例 #15
0
ファイル: Trivia.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task StartTrivia()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            if (!Running)
            {
                using (var db = new CurrencyContext())
                {
                    var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                    var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();

                    if (account != null && cooldowns != null)
                    {
                        var lastTrivia      = cooldowns.Trivia;
                        var cooldownHandler = new CooldownHandler();

                        if (account.Inventory.ContainsKey("trivia_license"))
                        {
                            var isCooledDown = cooldownHandler.IsCooledDown(lastTrivia, "m", _triviaCooldown);

                            if (isCooledDown)
                            {
                                Running = true;

                                cooldowns.Trivia = DateTime.Now;
                                db.Update(cooldowns);
                                await db.SaveChangesAsync();

                                var response = await Client.GetAsync(TriviaUrl);

                                var responseString = await response.Content.ReadAsStringAsync();

                                var responseJson = JObject.Parse(responseString);
                                var score        = new Dictionary <ulong, int>();
                                var stopwatch    = new Stopwatch();

                                await ReplyAsync("A trivia session is starting in 30 seconds...");

                                await Task.Delay(10000);
                                await ReplyAsync("A trivia session is starting in 20 seconds...");

                                await Task.Delay(10000);
                                await ReplyAsync("A trivia session is starting in 10 seconds...");

                                await Task.Delay(7000);
                                await ReplyAsync("A trivia session is starting in 3 seconds...");

                                await Task.Delay(1000);
                                await ReplyAsync("A trivia session is starting in 2 seconds...");

                                await Task.Delay(1000);
                                await ReplyAsync("A trivia session is starting in 1 seconds...");

                                await Task.Delay(1000);
                                await ReplyAsync("Trivia is starting!");

                                foreach (var result in responseJson["results"])
                                {
                                    await Task.Delay(2000);
                                    await ReplyAsync(HttpUtility.HtmlDecode(result["question"].ToString()));

                                    this.result = result;

                                    await Task.Delay(2000);

                                    var answers = new List <string>();
                                    answers.Add(result["correct_answer"].ToString());
                                    foreach (var incorrectAnswer in result["incorrect_answers"])
                                    {
                                        answers.Add((string)incorrectAnswer);
                                    }

                                    answers = answers.OrderBy(a => Guid.NewGuid()).ToList();
                                    var answersMessage = string.Join(", ", answers.ToArray());
                                    await ReplyAsync("Answers: " + HttpUtility.HtmlDecode(answersMessage));

                                    Context.Client.MessageReceived += tryAnswer;

                                    stopwatch.Start();

                                    var timeout = false;

                                    while (winnerId == 0)
                                    {
                                        if (stopwatch.ElapsedMilliseconds > 15000)
                                        {
                                            timeout = true;
                                            break;
                                        }
                                    }

                                    stopwatch.Stop();
                                    stopwatch.Reset();

                                    Context.Client.MessageReceived -= tryAnswer;

                                    if (timeout)
                                    {
                                        var correctAnswer = HttpUtility.HtmlDecode((string)result["correct_answer"]);
                                        await ReplyAsync($"The answer was: {correctAnswer}!");
                                        await ReplyAsync("No answer was found, skipping to next question!");

                                        continue;
                                    }

                                    await ReplyAsync($"<@{winnerId}> has found the correct answer!");

                                    if (score.ContainsKey(winnerId))
                                    {
                                        score[winnerId]++;
                                    }
                                    else
                                    {
                                        score.Add(winnerId, 1);
                                    }

                                    winnerId = 0;

                                    if (score.ContainsValue(4) || result == responseJson["results"].Last)
                                    {
                                        break;
                                    }
                                }

                                var sortedScores = score.OrderBy(s => s.Value).ToList();

                                var winners = "";

                                foreach (var points in sortedScores)
                                {
                                    winners += $"<@{points.Key}> : {points.Value} points\n";
                                }

                                var embed = new EmbedBuilder();
                                embed.WithColor(new Color(0, 255, 0));
                                embed.WithTitle("Trivia score");
                                embed.WithDescription(winners);
                                await ReplyAsync("", false, embed.Build());

                                Running = false;
                            }
                            else
                            {
                                var cooldown = cooldownHandler.GetDifference(DateTime.Now, lastTrivia.AddMinutes(_triviaCooldown));
                                await ReplyAsync($"You can only start a trivia session once every {_triviaCooldown} minutes! \n" +
                                                 $"You still have to wait for: {cooldown}!");
                            }
                        }
                        else
                        {
                            await ReplyAsync("You can't start a trivia session without a license! Check the $shop.");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont have an account yet, type $acc to create one!");
                    }
                }
            }
            else
            {
                await ReplyAsync("A trivia session is already running!");
            }
        }
コード例 #16
0
        public async Task Rob(IUser user)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            if (user.Id != Context.Message.Author.Id)
            {
                using (var db = new CurrencyContext())
                {
                    var account         = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                    var cooldowns       = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                    var targetAccount   = db.UserAccounts.AsQueryable().Where(u => u.Id == user.Id).FirstOrDefault();
                    var targetCooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == user.Id).FirstOrDefault();
                    if (account != null && cooldowns != null)
                    {
                        if (account.Inventory.ContainsKey("beat_stick"))
                        {
                            if (targetAccount != null && targetCooldowns != null)
                            {
                                var rob                = cooldowns.Rob;
                                var robbed             = targetCooldowns.Robbed;
                                var cooldownHandler    = new CooldownHandler();
                                var isCooledDown       = cooldownHandler.IsCooledDown(rob, "m", _robCooldown);
                                var isCooledDownTarget = cooldownHandler.IsCooledDown(robbed, "m", _robCooldown);
                                if (isCooledDown)
                                {
                                    if (isCooledDownTarget)
                                    {
                                        var rng       = new Random();
                                        var robAmount = rng.Next(_minRob, _maxRob);

                                        if (rng.Next(0, 3) > 0)
                                        {
                                            robAmount = (targetAccount.Balance >= robAmount) ? robAmount : targetAccount.Balance;
                                            account.AddBalance(robAmount);
                                            targetAccount.SubtractBalance(robAmount);
                                            await ReplyAsync($"You stole: {robAmount} Kredits!");
                                        }
                                        else
                                        {
                                            robAmount = (account.Balance >= robAmount) ? robAmount : account.Balance;
                                            account.SubtractBalance(robAmount);
                                            targetAccount.AddBalance(robAmount);
                                            await ReplyAsync($"You were beaten up and lost: {robAmount} Kredits!");
                                        }
                                        cooldowns.Rob          = DateTime.Now;
                                        targetCooldowns.Robbed = DateTime.Now;

                                        db.Update(account);
                                        db.Update(cooldowns);
                                        db.Update(targetAccount);
                                        db.Update(targetCooldowns);
                                        await db.SaveChangesAsync();
                                    }
                                    else
                                    {
                                        var cooldown = cooldownHandler.GetDifference(DateTime.Now, robbed.AddMinutes(_robCooldown));
                                        await ReplyAsync($"Your target can only be robbed once every {_robCooldown} minutes! \n" +
                                                         $"You still have to wait for: {cooldown}!");
                                    }
                                }
                                else
                                {
                                    var cooldown = cooldownHandler.GetDifference(DateTime.Now, rob.AddMinutes(_robCooldown));
                                    await ReplyAsync($"You can only rob once every {_robCooldown} minutes! \n" +
                                                     $"You still have to wait for: {cooldown}!");
                                }
                            }
                            else
                            {
                                await ReplyAsync("Your target does not have an account yet!");
                            }
                        }
                        else
                        {
                            await ReplyAsync("You need a beat stick to rob people with!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont have an account yet, type $acc to create one!");
                    }
                }
            }
            else
            {
                await ReplyAsync("You can't rob yourself you idiota!");
            }
        }
コード例 #17
0
ファイル: Income.cs プロジェクト: Not-Solid/VJEmmy_v2
        public async Task Work()
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (account != null && cooldowns != null)
                {
                    var pay = _workAmount;
                    if (account.Inventory.ContainsKey("working_tools"))
                    {
                        pay += (25 * account.Inventory["working_tools"]);
                    }
                    if (account.Inventory.ContainsKey("doctors_license"))
                    {
                        pay *= (1 + account.Inventory["doctors_license"]);
                    }

                    var work            = cooldowns.Work;
                    var cooldownHandler = new CooldownHandler();
                    var isCooledDown    = cooldownHandler.IsCooledDown(work, "m", _workCooldown);
                    if (isCooledDown)
                    {
                        var rng    = new Random();
                        var randNr = rng.Next(0, 3);

                        if (randNr == 0 && account.Inventory.ContainsKey("vaccine"))
                        {
                            randNr = 1;
                        }

                        if (randNr > 0)
                        {
                            account.AddBalance(pay);
                            cooldowns.Work = DateTime.Now;

                            db.Update(account);
                            db.Update(cooldowns);
                            await db.SaveChangesAsync();
                            await ReplyAsync($"You've earned {pay} Kredits!");
                        }
                        else
                        {
                            cooldowns.Work = DateTime.Now;

                            db.Update(cooldowns);
                            await db.SaveChangesAsync();
                            await ReplyAsync("You got covid and could not show up to work. Unlucky, I guess.");
                        }
                    }
                    else
                    {
                        var cooldown = cooldownHandler.GetDifference(DateTime.Now, work.AddMinutes(_workCooldown));
                        await ReplyAsync($"You can only work once every {_workCooldown} minutes!\n" +
                                         $"You still have to wait for {cooldown}!");
                    }
                }
                else
                {
                    await ReplyAsync("You dont have an account yet, type $acc to create one!");
                }
            }
        }
コード例 #18
0
ファイル: dal.cs プロジェクト: gadnandev/Material-Currency
        /// <summary>
        /// another async layer to make sure nothing gets stuck <see cref="UpdateDataBaseAsync"/>
        /// </summary>
        private async Task _updateDataBaseAsync(DateTime start, DateTime finish, bool force)
        {
            using (var ctx = new CurrencyContext()) {
                DateTime checkStart = start.Date;                                                                                        //make sure requested date is not later than the latest downloaded because
                                                                                                                                         //it is assumed that everything is updated until the latest date available

                if (!force)                                                                                                              //if we should only update what is necessary
                {
                    checkStart = DateTime.Parse((from hc in ctx.HistoricalCurrency select hc.date).ToList().LastOrDefault()).AddDays(1); //latest update to the database
                }
                if (start < checkStart)
                {
                    start = checkStart;                    //make sure everything is updated until latest available
                }
                Task <string>[] taskList = new Task <string> [(finish - start).Days + 1];

                for (int i = 0; start <= finish; i++, start = start.AddDays(1))   //each day in date range
                {
                    string parsedDate = ParseDate(start);

                    taskList[i] = Task <string> .Factory.StartNew(() => {//real concurrency!
                        string jsonData = "";
                        using (var wc = new WebClient()) {
                            for (int j = 0; j < 4; j++) //try 4 times
                            {
                                try {                   //we calculate url here so we get a new key each time
                                    string url = @"http://apilayer.net/api/historical?access_key=" + GetKey() + "&date=" +
                                                 parsedDate + @"&currencies=EUR,GBP,ILS,BTC,JMD&format=1";
                                    jsonData = wc.DownloadString(url);
                                    if (jsonData.Contains("success\":true"))//CurrencyClayer's way of saying good
                                    {
                                        break;
                                    }
                                }
                                catch (Exception e) {
                                    Console.WriteLine(e.Message);
                                }
                            }
                        }
                        return(jsonData);
                    });
                }

                Task.WaitAll(taskList);//wait for all of the threads to finish
                foreach (var item in taskList)
                {
                    if (item.Result == "")
                    {
                        continue;                    //something went wrong
                    }
                    HistoricalCurrencyEntity entity =
                        JsonConvert.DeserializeObject <HistoricalCurrencyEntity>(item.Result);
                    if (!ctx.HistoricalCurrency.Any(e => e.date == entity.date))   //only add if it's not saved already
                    {
                        ctx.HistoricalCurrency.Add(entity);
                    }
                }

                await ctx.SaveChangesAsync();
            }
        }
コード例 #19
0
        public async Task SpinRoulette(int bet)
        {
            if (!CommandHandler.IsPostedInCorrectChannel(Context.Message, GetType().Name))
            {
                return;
            }

            using (var db = new CurrencyContext())
            {
                var account   = db.UserAccounts.AsQueryable().Where(u => u.Id == Context.User.Id).FirstOrDefault();
                var cooldowns = db.Cooldowns.AsQueryable().Where(c => c.Id == Context.User.Id).FirstOrDefault();
                if (bet >= _minWager && bet <= _maxWager)
                {
                    if (account != null && cooldowns != null)
                    {
                        if (bet <= account.Balance)
                        {
                            var lastRoulette    = cooldowns.Roulette;
                            var cooldownHandler = new CooldownHandler();
                            var isCooledDown    = cooldownHandler.IsCooledDown(lastRoulette, "s", _rouletteCooldown);
                            if (isCooledDown)
                            {
                                var rng = new Random();
                                if (rng.Next(0, 2) > 0)
                                {
                                    account.AddBalance(bet);
                                    await ReplyAsync($"You won: {bet} Kredits!");
                                }
                                else
                                {
                                    account.SubtractBalance(bet);
                                    await ReplyAsync($"You lost: {bet} Kredits!");
                                }
                                cooldowns.Roulette = DateTime.Now;
                                db.Update(account);
                                db.Update(cooldowns);
                                await db.SaveChangesAsync();
                            }
                            else
                            {
                                var cooldown = cooldownHandler.GetDifference(DateTime.Now, lastRoulette.AddSeconds(_rouletteCooldown));
                                await ReplyAsync($"You can only roulette once every {_rouletteCooldown} seconds! \n" +
                                                 $"You still have to wait for: {cooldown}!");
                            }
                        }
                        else
                        {
                            await ReplyAsync("You can't afford that bet!");
                        }
                    }
                    else
                    {
                        await ReplyAsync("You dont have an account yet, type $acc to create one!");
                    }
                }
                else
                {
                    await ReplyAsync($"Wager between {_minWager}-{_maxWager} Kredits!");
                }
            }
        }