예제 #1
0
        public async Task Transfer(int funds, IUser recipient)
        {
            IUser sender = Context.User;

            if (funds < 1)
            {
                await ReplyAsync("Amount must be greater than zero.");
            }
            else if ((await _userRepository.GetCoinsByUserIdAsync(sender.Id)) < funds)
            {
                await ReplyAsync("Insufficient funds.");
            }
            else if (recipient == null)
            {
                await ReplyAsync("Recipient was not specified.");
            }
            else
            {
                await _service.RemoveFunds(sender.Id, funds);

                await _service.AddFunds(recipient.Id, funds);

                await Task.WhenAll(new[] {
                    sender.SendMessageAsync($"{funds} coins sent to {recipient.Username}."),
                    recipient.SendMessageAsync($"{funds} coins received from {sender.Username}.")
                });
            }
        }
예제 #2
0
        private async Task <List <PlayerReward> > RewardPlayers(List <GamePhase> phases, GroupType winningGroup)
        {
            List <PlayerReward> rewards = GetPlayerRewards(ActiveGame, phases, ActiveGame.Players, winningGroup);
            await Task.WhenAll(rewards.Select(r =>
            {
                return(_coin.AddFunds(r.Player.User.Id, r.Reward));
            }));

            await _coin.SaveAsync();

            return(rewards);
        }
예제 #3
0
        public async Task Transfer(ulong giverID, ulong receiverID, int amount)
        {
            await _coinService.RemoveFunds(giverID, amount);

            await _coinService.AddFunds(receiverID, amount);
        }