public async Task ShowCurrencies() { string[] currencies = Enum.GetNames(typeof(CurrencyEnum)); var emb = await CurrencyEmbedBuilder.ShowExchangeRates(currencies, Context); await Context.Channel.SendMessageAsync(embed : emb.Build()); }
public async Task RedeemDaily() { var user = _userRepo.GetByID(Context.User.Id); bool firstTime = false; if (user == null) { user = CheckIfExistAndCreate(); firstTime = true; } if (IsElligable(user) || firstTime) { user.AddAmount(CurrencyEnum.Entropy, RedeemAmount); user.RedeemedTime = DateTime.Now; _userRepo.SaveChanges(); var emb = await CurrencyEmbedBuilder.MakeRedeemEmbed(Context, user, RedeemAmount); await Context.Channel.SendMessageAsync(embed : emb.Build()); } else { var diff = user.RedeemedTime.AddDays(1).Subtract(DateTime.Now); await Context.Channel.SendMessageAsync("You can't do that yet please wait another" + $": {diff.ToString(@"hh\hmm\mss\s")}"); } }
public async Task TradeCurrency(double amount, string cur1, string cur2) { if (amount <= 0) { await Context.Channel.SendMessageAsync("You can't exchange an invalid amount good try :^)"); return; } EntityUser eu = _userRepo.GetByID(Context.User.Id); if (eu == null) { await ErrorUserDoesntExistInSystem(); return; } string[] names = Enum.GetNames(typeof(CurrencyEnum)); var curToTrade = names.SingleOrDefault(n => n.ToLower().StartsWith(cur1.ToLower())); var curConvert = names.SingleOrDefault(n => n.ToLower().StartsWith(cur2.ToLower())); if (curToTrade == null || curConvert == null) { var em = await CurrencyEmbedBuilder.MakeCurrencyError(names, Context); await Context.Channel.SendMessageAsync(embed : em.Build()); return; } CurrencyEnum curr1 = (CurrencyEnum)Enum.Parse(typeof(CurrencyEnum), curToTrade); if (eu.GetCurrencyAmount(curr1) < amount) { await Context.Channel.SendMessageAsync($"You're {amount - Math.Round(eu.GetCurrencyAmount(curr1), 2)}" + $" {curr1} short for that exchange."); return; } CurrencyEnum curr2 = (CurrencyEnum)Enum.Parse(typeof(CurrencyEnum), curConvert); ConversionRate cr1 = (ConversionRate)Enum.Parse(typeof(ConversionRate), $"{curToTrade}To{curConvert}"); ConversionRate cr2 = (ConversionRate)Enum.Parse(typeof(ConversionRate), $"{curConvert}To{curToTrade}"); var rate = (((double)(int)cr2) / ((double)(int)cr1)); var addAmount = rate * amount; eu.RemoveAmount(curr1, amount); eu.AddAmount(curr2, addAmount); _userRepo.SaveChanges(); var embed = await CurrencyEmbedBuilder.MakeTradeEmbed(addAmount, amount, Context, curr2, curr1); await Context.Channel.SendMessageAsync(embed : embed.Build()); }
public async Task ShowBalance(IGuildUser user) { var usr = _userRepo.GetByID(user.Id); if (usr == null) { await ErrorOtherUserDoesntExistInSystem(); } else { await Context.Channel.SendMessageAsync(embed : CurrencyEmbedBuilder.MakeBalanceEmbed(Context, usr) .Result.Build()); } }
public async Task Top(int page) { if (page > 1 && page * 10 > _userRepo.GetCountUsers()) { page = _userRepo.GetCountUsers() / 10; } if (page < 1) { page = 1; } var users = _userRepo.GetRanking(page); string s = await CurrencyEmbedBuilder.MakeStringRanking(users, page, Context); await Context.Channel.SendMessageAsync(text : s); }
public async Task TransferCurrency(double amount, string c, IGuildUser user) { if (amount == 0) { await Context.Channel.SendMessageAsync($"Wow you gave nothing to {user.Nickname ?? user.Username},what are you Dutch, you greedy bastard"); return; } if (amount < 0) { await Context.Channel.SendMessageAsync($"You can't transfer a negative amount to {user.Nickname ?? user.Username}, greedy stealing bastard."); return; } EntityUser euO = _userRepo.GetByID(Context.User.Id); if (euO == null) { await ErrorUserDoesntExistInSystem(); return; } if (user.IsBot) { await Context.Channel.SendMessageAsync("Why would you transfer money to a bot?"); return; } EntityUser euT = _userRepo.GetByID(user.Id); if (euT == null) { await ErrorOtherUserDoesntExistInSystem(); return; } string[] names = Enum.GetNames(typeof(CurrencyEnum)); var curToTransfer = names.SingleOrDefault(n => n.ToLower().StartsWith(c.ToLower())); if (curToTransfer == null) { var em = await CurrencyEmbedBuilder.MakeCurrencyError(names, Context); await Context.Channel.SendMessageAsync(embed : em.Build()); return; } CurrencyEnum cu = (CurrencyEnum)Enum.Parse(typeof(CurrencyEnum), curToTransfer); if (euO.GetCurrencyAmount(cu) < amount) { await Context.Channel.SendMessageAsync($"You're {Math.Round((amount - euO.GetCurrencyAmount(cu)), 2)} " + $"{cu} short to transfer this amount"); return; } euO.RemoveAmount(cu, amount); euT.AddAmount(cu, amount); _userRepo.SaveChanges(); var emb = await CurrencyEmbedBuilder.GetTransferEmbed(Context, euT, euO, cu, amount); await Context.Channel.SendMessageAsync(embed : emb.Build()); }
public async Task DisplayHelp() { var embed = await CurrencyEmbedBuilder.BuildCurrencyHelpEmbed(Context); await Context.Channel.SendMessageAsync(embed : embed.Build()); }