Пример #1
0
        public async Task Wage(int value, [Remainder] string username)
        {
            await Context.Channel.DeleteMessageAsync(Context.Message);

            var routing = FinanseRoomRouting.Get();
            var clients = routing.Cash.Rooms?
                          .SelectMany(_ => _.Clients);

            var client = routing.Cash.Rooms?
                         .SelectMany(_ => _.Clients)?
                         .Where(_ => _.Name != null)
                         .FirstOrDefault(_ => _.Name.ToString().ToLower().Contains(username.ToLower()));

            if (client == null)
            {
                await Context.Channel.SendMessageAsync($"Пользователь {username} не найден");

                return;
            }
            else
            {
                var builder = new EmbedBuilder();
                var footer  = new EmbedFooterBuilder();

                client.AddUSDBalance(value);
                builder.WithTitle($"{Context.Channel.Name}");
                builder.WithDescription($"{client.Name}: зачеслено {value}$");
                footer.WithText($"Итоговый дебет: {client.USDBalance}");
                builder.WithFooter(footer);

                await Context.Channel.SendMessageAsync("", false, builder.Build());
            }
        }
Пример #2
0
        private FinanceRoom RouteRoom()
        {
            var room = FinanseRoomRouting.Get().Cash.Rooms.FirstOrDefault(_ => _.Id == Context.Channel.Id);

            if (room == null)
            {
                room = new FinanceRoom(Context.Channel.Id);
                FinanseRoomRouting.Get().CreateRoom(room);
            }

            return(room);
        }
Пример #3
0
        public async Task Pay()
        {
            var routing = FinanseRoomRouting.Get();
            var clients = routing.Cash.Rooms?
                          .SelectMany(_ => _.Clients);
            var str = new StringBuilder();

            foreach (var client in clients)
            {
                if (client.USDBalance == 0)
                {
                    continue;
                }
                str.AppendLine($"**{client.Name}**: {client.USDBalance} USD");
            }

            var sum = clients.Sum(_ => _.USDBalance);

            str.AppendLine($"**Всего**: {sum} USD");

            await Context.Message.DeleteAsync();

            await Context.Channel.SendMessageAsync(str.ToString());

            foreach (var room in routing.Cash.Rooms)
            {
                var channel = Context.Guild.GetTextChannel(room.Id);

                foreach (var item in room.Clients)
                {
                    try
                    {
                        var builder = new EmbedBuilder();
                        builder.WithTitle(channel.Name);
                        builder.WithDescription($"{item.Name} ОПЛАЧЕНО: {item.USDBalance}$");
                        await channel.SendMessageAsync("", false, item.PayEmbedBuild());

                        item.RefrashBalance();
                    }
                    catch (Exception)
                    {
                    }
                }
            }
        }
Пример #4
0
        public async Task Set(int value, [Remainder] string username)
        {
            await Context.Channel.DeleteMessageAsync(Context.Message);

            var routing = FinanseRoomRouting.Get();
            var room    = routing.Cash.Rooms.FirstOrDefault(_ => _.Id == Context.Channel.Id);

            if (room == null)
            {
                await Context.User.SendMessageAsync($"Ошибка запроса: комната не была инициализирована");

                return;
            }

            var client = room.Clients.FirstOrDefault(_ => _.Name.ToLower().Contains(username.ToLower()));

            if (client == null)
            {
                await Context.User.SendMessageAsync($"Пользователь с ником {username} не найден");
            }

            client.AddBalance(value);
            await Context.Channel.SendMessageAsync("", false, client.BalanceBuild());
        }
Пример #5
0
        public async Task Wage()
        {
            await Context.Channel.DeleteMessageAsync(Context.Message);

            var routing = FinanseRoomRouting.Get();
            var clients = routing.Cash.Rooms?
                          .SelectMany(_ => _.Clients);
            var str = new StringBuilder();

            foreach (var client in clients)
            {
                if (client.USDBalance == 0)
                {
                    continue;
                }
                str.AppendLine($"**{client.Name}**: {client.USDBalance} USD");
            }

            var sum = clients.Sum(_ => _.USDBalance);

            str.AppendLine($"**Всего**: {sum} USD");

            await Context.Channel.SendMessageAsync(str.ToString());
        }