Example #1
0
        public async Task ShowCurrencies()
        {
            string[] currencies = Enum.GetNames(typeof(CurrencyEnum));
            var      emb        = await CurrencyEmbedBuilder.ShowExchangeRates(currencies, Context);

            await Context.Channel.SendMessageAsync(embed : emb.Build());
        }
Example #2
0
        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")}");
            }
        }
Example #3
0
        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());
        }
Example #4
0
        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());
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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());
        }
Example #7
0
        public async Task DisplayHelp()
        {
            var embed = await CurrencyEmbedBuilder.BuildCurrencyHelpEmbed(Context);

            await Context.Channel.SendMessageAsync(embed : embed.Build());
        }