Example #1
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }

            var api  = Main.Api;
            var user = api.Users.GetUser(msg);

            if (user.Access < 6)
            {
                sender.Text("❌ Вам недоступна эта команда.", msg.ChatId);
                return;
            }

            var  array  = msg.Text.Split(" ");
            long userId = 0;

            try
            {
                userId = long.Parse(array[1]);
            }catch
            {
                sender.Text("❌ Вы ввели неверный ID пользователя.", msg.ChatId);
                return;
            }

            Car car;

            try
            {
                var carId = long.Parse(array[2]);
                car = CarsHelper.GetHelper().Cars.Single(c => c.Id == carId);
            }
            catch
            {
                sender.Text("❌ Вы ввели неверный ID автомобиля.", msg.ChatId);
                return;
            }

            var garage = api.Garages.GetGarage(userId);

            if ((garage.ParkingPlaces - garage.Cars.Length) == 0)
            {
                sender.Text("❌ У пользователя нет свободного места в гараже.", msg.ChatId);
                return;
            }

            var str = CarsHelper.GetHelper().AddCarToString(garage.Cars, car.Id);

            Main.Api.Garages.SetCars(user.Id, str);

            sender.Text($"✔ Вы выдали {car.Manufacturer} {car.Model} игроку с ID {userId}", msg.ChatId);
        }
Example #2
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }
            long carId;

            try
            {
                carId = Int64.Parse(msg.Payload.Arguments[0]);
            }
            catch
            {
                sender.Text("❌ Эту команду можно вызывать только с клавиатуры!", msg.ChatId);
                return;
            }
            var car  = CarsHelper.GetHelper().GetCarFromId(carId);
            var text = $"🚗 Информация о автомобиле:" +
                       $"\n 🚘 Производитель: {car.Manufacturer}" +
                       $"\n 🏎 Модель: {car.Model}" +
                       $"\n ⚡ Мощность: {car.Power} л.с" +
                       $"\n 🅱 Масса: {car.Weight}" +
                       $"\n 💰 Цена: {car.Price}";

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("💵 Купить автомобиль", "buycar", new List <string>()
            {
                car.Id.ToString()
            }, color: KeyboardButtonColor.Positive);
            kb.AddLine();
            kb.AddButton("↩ Назад к автомобилям", "getcars", new List <string>()
            {
                car.Manufacturer, "0"
            });

            sender.Text(text, msg.ChatId, kb.Build());
        }
Example #3
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }

            var  user       = Main.Api.Users.GetUser(msg);
            var  garage     = Main.Api.Garages.GetGarage(user.Id);
            var  car        = CarsHelper.GetHelper().GetCarFromId(long.Parse(msg.Payload.Arguments[0]));
            var  text       = string.Empty;
            var  kb         = new KeyboardBuilder(bot);
            bool isAvalible = true;

            if (user.Money < car.Price)
            {
                text = $"❌ У Вас недостаточно наличных на покупку этого автомобиля." +
                       $"\n 💵 Ваш баланс: {user.Money}";
                isAvalible = false;
            }


            if ((garage.ParkingPlaces - garage.Cars.Split(";").Length - 1) <= 0)
            {
                text = $"❌ У Вас недостаточно парковочных мест в гараже. Освободите место и попробуйте ещё раз!";
                kb.AddButton("🔧 Перейти в гараж", "garage");
                kb.AddLine();
                isAvalible = false;
            }

            if (isAvalible)
            {
                Main.Api.Users.RemoveMoney(user.Id, car.Price);
                using (var db = new Database())
                {
                    car.Id = db.Cars.Count() + 1;

                    var engine = new Engine();
                    engine.Id     = db.Engines.Count() + 1;
                    engine.Name   = car.Manufacturer + " " + car.Model;
                    engine.Power  = car.Power;
                    engine.Weight = car.Weight;
                    engine.CarId  = car.Id;
                    db.Engines.Add(engine);

                    car.Engine = engine.Id;
                    car.Health = 100;
                    db.Cars.Add(car);

                    var gar = db.Garages.Single(g => g.UserId == user.Id);
                    gar.Engines = gar.Engines + $"{engine.Id};";
                    gar.Cars    = gar.Cars + $"{car.Id};";
                    db.SaveChanges();
                }
                text = $"🚗 Поздравляем с покупкой! Ваш новенький {car.Manufacturer} {car.Model} уже стоит в гараже!" +
                       $"\n ❗ Теперь укажите номер региона для автомобильного номера:";

                UsersCommandHelper.GetHelper().Add("buycarnumber", user.Id);
            }
            else
            {
                kb.AddButton("🚘 Перейти в автосалон", "autostore");
            }


            sender.Text(text, msg.ChatId, kb.Build());
        }
Example #4
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (Main.Api.Users.IsBanned(msg))
            {
                return;
            }

            if (!Main.Api.Users.CheckUser(msg))
            {
                var kb2 = new KeyboardBuilder(bot);
                kb2.AddButton("➕ Зарегистрироваться", "start");
                sender.Text("❌ Вы не зарегистрированы, нажмите на кнопку ниже, чтобы начать", msg.ChatId, kb2.Build());
                return;
            }
            if (msg.Payload != null)
            {
                if (msg.Payload.Arguments != null)
                {
                    var text = "🚘 Список автомобилей:\n";

                    var kb          = new KeyboardBuilder(bot);
                    var manufacture = string.Empty;
                    try
                    {
                        manufacture = msg.Payload.Arguments[0];
                    }catch
                    {
                        sender.Text("❌ Эту команду можно вызвать только с аргументом через кнопку.", msg.ChatId);
                        return;
                    }

                    List <Car> cars;
                    if (manufacture == "Rus")
                    {
                        var l1 = CarsHelper.GetHelper().Cars.Where(c => c.Manufacturer == "ВАЗ").ToList();
                        var l2 = CarsHelper.GetHelper().Cars.Where(c => c.Manufacturer == "Лада").ToList();
                        var l3 = CarsHelper.GetHelper().Cars.Where(c => c.Manufacturer == "Нива").ToList();
                        var l4 = CarsHelper.GetHelper().Cars.Where(c => c.Manufacturer == "Москвич").ToList();
                        var l5 = CarsHelper.GetHelper().Cars.Where(c => c.Manufacturer == "УАЗ").ToList();
                        cars = new List <Car>();

                        foreach (var car in l1)
                        {
                            cars.Add(car);
                        }
                        foreach (var car in l2)
                        {
                            cars.Add(car);
                        }
                        foreach (var car in l3)
                        {
                            cars.Add(car);
                        }
                        foreach (var car in l4)
                        {
                            cars.Add(car);
                        }
                        foreach (var car in l5)
                        {
                            cars.Add(car);
                        }
                    }
                    else
                    {
                        cars = CarsHelper.GetHelper().Cars.Where(c => c.Manufacturer == manufacture).ToList();
                    }

                    try
                    {
                        var offset = Int32.Parse(msg.Payload.Arguments[1]);

                        var countCars = cars.Count;

                        for (var i = 0; i < 10; i++)
                        {
                            try
                            {
                                var car = cars[i + (offset * 10)];
                                text += $"\n🚘 [{i + (offset * 10)}] {car.Manufacturer} {car.Model}" + $"| ⚡ {car.Power} лс., | ⚖ {car.Weight} кг." +
                                        $"\n💰 Цена: {car.Price} руб.\n";
                                if (sender.Platform == Fooxboy.NucleusBot.Enums.MessengerPlatform.Vkontakte)
                                {
                                    kb.AddButton($"🚗 {i + (offset * 10)}", "infocar", new List <string>()
                                    {
                                        car.Id.ToString()
                                    });
                                }
                                if (sender.Platform == Fooxboy.NucleusBot.Enums.MessengerPlatform.Telegam)
                                {
                                    kb.AddButton($"🚗 {i + (offset * 10)} [{car.Model}]", "infocar", new List <string>()
                                    {
                                        car.Id.ToString()
                                    });
                                }

                                if ((i == 3 && (countCars > 4 || countCars > 14 || countCars > 24)) || (i == 7 && (countCars > 8 || countCars > 18 || countCars > 28)))
                                {
                                    kb.AddLine();
                                }
                            }catch
                            {
                                break;
                            }
                        }

                        kb.AddLine();
                        if (offset > 0)
                        {
                            kb.AddButton($"◀ На страницу {offset - 1}", "getcars", new List <string>()
                            {
                                manufacture, $"{offset - 1}"
                            });
                        }
                        kb.AddButton("↩ Назад в автосалон", "autostore");
                        if (countCars > ((offset + 1) * 10))
                        {
                            kb.AddButton($"На страницу {offset + 1} ▶", "getcars", new List <string>()
                            {
                                manufacture, $"{offset + 1}"
                            });
                        }
                    }catch
                    {
                        for (var i = 0; i < 10; i++)
                        {
                            try
                            {
                                var car = cars[i];
                                text += $"\n🚘 [{i}] {car.Manufacturer} {car.Model}" + $"| ⚡ {car.Power} лс., | ⚖ {car.Weight} кг." +
                                        $"\n💰 Цена: {car.Price} руб.\n";
                                kb.AddButton($"🚗 {i}", "infocar", new List <string>()
                                {
                                    car.Id.ToString()
                                });
                                if (i == 4 || i == 8)
                                {
                                    kb.AddLine();
                                }
                            }
                            catch
                            {
                                break;
                            }
                        }
                        kb.AddLine();

                        kb.AddButton("↩ Назад в автомагазин", "autostore");
                        if (cars.Count > 10)
                        {
                            kb.AddButton("На страницу 2 ▶", "getcars", new List <string>()
                            {
                                manufacture, $"1"
                            });
                        }
                    }

                    if (cars.Count == 0)
                    {
                        text = "⚡ Автомобили от этого производителя скоро появятся!";
                    }
                    sender.Text(text, msg.ChatId, kb.Build());
                }
            }
        }
Example #5
0
 public void Init(IBot bot, ILoggerService logger)
 {
     CarsHelper.GetHelper().InitCars(logger);
 }