예제 #1
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            if (msg.ChatId != msg.MessageVK.FromId)
            {
                sender.Text("⛔ Эту команду нельзя вызывать в беседах. Чтобы узнать список всех команд - напишите \"команды\" ", msg.ChatId);
                return;
            }
            var file   = File.ReadAllText("AdminsConfig.json");
            var admins = JsonConvert.DeserializeObject <Models.AdminsModels>(file);

            if (!(admins.Users.Any(u => u == msg.MessageVK.FromId)))
            {
                sender.Text("🛑 У вас нет прав администратора для вызова этой команды.", msg.ChatId);
                return;
            }

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("Репорты", "reportlist");
            kb.AddLine();
            kb.AddButton("Список администраторов", "adminlist");
            kb.AddLine();
            kb.AddButton("🔙 В меню", "menu");
            kb.SetOneTime();

            sender.Text("🤴 Админ меню: ", msg.ChatId, kb.Build());
        }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            var model = JsonConvert.DeserializeObject <ChangelogModel>(File.ReadAllText("Changelog.json"));

            if (msg.ChatId != msg.MessageVK.FromId)
            {
                sender.Text(model.Text, msg.ChatId);
            }
            else
            {
                var kb = new KeyboardBuilder(bot);
                kb.AddButton("🔙 В меню", "menu");
                kb.SetOneTime();
                sender.Text(model.Text, msg.ChatId, kb.Build());
            }
        }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }
            if (msg.ChatId != msg.MessageVK.FromId)
            {
                sender.Text("⛔ Эту команду нельзя вызывать в беседах. Чтобы узнать список всех команд - напишите \"команды\" ", msg.ChatId);
                return;
            }

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("➕ Добавить объявление", "AddAds", color: KeyboardButtonColor.Positive);
            kb.AddLine();
            kb.AddButton("🔍 Список объявлений", "ads");
            kb.SetOneTime();
            kb.AddLine();
            kb.AddButton("🔙 В меню", "menu");

            sender.Text("❓ Выберите действие на клавиатуре", msg.ChatId, kb.Build());
        }
        public static void AddPartTwo(long userId, long chatId, IMessageSenderService sender, string text, IBot bot)
        {
            if (text.Length > 300)
            {
                var kb = new KeyboardBuilder(bot);
                kb.AddButton("Попробовать ещё раз", "AddAds", color: KeyboardButtonColor.Positive);
                kb.SetOneTime();
                sender.Text($"⛔ Объявление не может быть больше 300х символов. В Вашем объявлении {text.Length} символов.", chatId, kb.Build());
                return;
            }

            using (var db = new BotData())
            {
                var server = StaticContent.SelectUserServer.SingleOrDefault(u => u.Key == userId);
                db.Ads.Add(new Ad()
                {
                    AdId       = new Random().Next(0, 99999999),
                    Owner      = userId,
                    DateCreate = Convert.ToInt64(DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds),
                    Server     = server.Value,
                    Time       = 3,
                    Text       = text
                });

                db.SaveChanges();

                StaticContent.SelectUserServer.Remove(userId);
            }

            sender.Text("✔ Ваше объявление добавлено.", chatId);
        }
예제 #5
0
        public KeyboardBuilder DialogInDevelopment()
        {
            var keyboard = new KeyboardBuilder();

            keyboard.SetOneTime();
            keyboard.AddButton("В главное меню", "Расписание -> Главное меню", KeyboardButtonColor.Default);

            return(keyboard);
        }
예제 #6
0
        public KeyboardBuilder Schedule()
        {
            var keyboard = new KeyboardBuilder();

            keyboard.SetOneTime();
            //keyboard.AddButton("Сегодня", "Расписание -> Сегодня", KeyboardButtonColor.Primary);
            keyboard.AddButton("Завтра", "Расписание -> Завтра", KeyboardButtonColor.Primary);
            keyboard.AddButton("Неделя", "Расписание -> Неделя", KeyboardButtonColor.Primary);
            keyboard.AddLine();
            keyboard.AddButton("В главное меню", "Расписание -> Главное меню", KeyboardButtonColor.Default);

            return(keyboard);
        }
        public TicTacToeKeyboards()
        {
            var builder = new KeyboardBuilder();

            builder.SetOneTime();
            Empty = builder.Build();

            builder = new KeyboardBuilder();
            builder.AddButton("Новая комната", "NewRoom", KeyboardButtonColor.Positive);
            builder.AddButton("Подключиться", "ConnectToRoom", KeyboardButtonColor.Positive);
            builder.SetOneTime();
            Main = builder.Build();
        }
예제 #8
0
    public static MessageKeyboard FromCoreToVk(CoreKeyboard coreKeyboard, bool isInlineKeyboardAllowed = false)
    {
        if (coreKeyboard is null)
        {
            return(null);
        }
        var kb = new KeyboardBuilder();
        var inlineKeyboardEnabled = coreKeyboard.IsInline && isInlineKeyboardAllowed;

        if (!isInlineKeyboardAllowed)
        {
            if (coreKeyboard.IsOneTime)
            {
                kb.SetOneTime();
            }
        }
        else
        {
            coreKeyboard.RemoveReturnToMenuButton();
        }

        kb.SetInline(inlineKeyboardEnabled);

        var isFirst = true;

        foreach (var line in coreKeyboard.Buttons)
        {
            if (!isFirst)
            {
                kb.AddLine();
            }

            foreach (var button in line)
            {
                var color = FromCoreColorToVk(button.Color);
                kb.AddButton(new MessageKeyboardButtonAction()
                {
                    Label   = button.Title,
                    Payload = button.Payload,
                    Type    = inlineKeyboardEnabled ? KeyboardButtonActionType.Callback : KeyboardButtonActionType.Text,
                }, color);
                // kb.AddButton(button.Title, button.PayloadValue, color, button.PayloadKey);
            }

            isFirst = false;
        }

        return(kb.Build());
    }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            var carTarget = long.Parse(msg.Payload.Arguments[0]);

            using (var db = new BotData())
            {
                var targetInfo = db.Targets.SingleOrDefault(t => t.UserId == msg.MessageVK.FromId);
                var kb         = new KeyboardBuilder(bot);
                kb.AddButton("🔙 Назад к авто", "carinfo", new List <string>()
                {
                    carTarget.ToString()
                });
                kb.AddLine();
                kb.AddButton("🔙 В меню", "menu");
                kb.SetOneTime();
                if (targetInfo is null)
                {
                    targetInfo        = new Target();
                    targetInfo.UserId = msg.ChatId;
                    targetInfo.Count  = 0;
                    targetInfo.CarId  = carTarget;
                    db.Targets.Add(targetInfo);
                    sender.Text("✔ Цель добавлена", msg.ChatId, kb.Build());
                }
                else
                {
                    targetInfo.CarId = carTarget;
                    sender.Text("✔ Цель обновлена", msg.ChatId, kb.Build());
                }

                db.SaveChanges();
            }
        }
예제 #10
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            if (msg.ChatId != msg.MessageVK.FromId)
            {
                sender.Text("⛔ Эту команду нельзя вызывать в беседах. Чтобы узнать список всех команд - напишите \"команды\" ", msg.ChatId);
                return;
            }

            var file   = File.ReadAllText("AdminsConfig.json");
            var admins = JsonConvert.DeserializeObject <Models.AdminsModels>(file);

            var isAdmin = admins.Users.Any(u => u == msg.MessageVK.FromId);


            var kb = new KeyboardBuilder(bot);

            kb.AddButton("🔍 Поиск машин", "searchMenu", color: KeyboardButtonColor.Primary);
            kb.AddLine();
            kb.AddButton("📮 Объявления", "adsmenu");
            kb.AddButton("🎞 Changelog", "changelog");
            if (isAdmin)
            {
                kb.AddButton("🤴 Админ-панель", "adminmenu");
            }
            kb.AddLine();
            kb.AddButton("⚙ Настройки", "settings");
            kb.SetOneTime();

            sender.Text("🎈 Главное меню: ", msg.ChatId, kb.Build());
        }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            StaticContent.UsersCommand.Remove(msg.MessageVK.FromId.Value);


            if (msg.ChatId != msg.MessageVK.FromId)
            {
                sender.Text("⛔ Эту команду нельзя вызывать в беседах. Чтобы узнать список всех команд - напишите \"команды\" ", msg.ChatId);
                return;
            }

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("🚗 Каталог машин", "catalog");
            kb.AddLine();
            kb.AddButton("🔍 Поиск по названию", "search");
            kb.SetOneTime();
            kb.AddLine();
            kb.AddButton("🔙 В меню", "menu");

            sender.Text("🚗 Выберите необходимый пункт: ", msg.ChatId, kb.Build());
        }
예제 #12
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 api               = Main.Api;
            var user              = api.Users.GetUser(msg);
            var q                 = int.Parse(msg.Payload.Arguments[0]);
            var response          = long.Parse(msg.Payload.Arguments[1]);
            var countTrueResponse = long.Parse(msg.Payload.Arguments[2]);
            var text              = string.Empty;
            var kb                = new KeyboardBuilder(bot);

            if (q == 5)
            {
                kb.AddButton(ButtonsHelper.ToHomeButton());
                if (countTrueResponse < 4)
                {
                    sender.Text($"❌ Вы провалили экзамен! Вы ответили на {countTrueResponse} вопросов из 5", msg.ChatId, kb.Build());
                }
                else
                {
                    using (var db = new Database())
                    {
                        var userDb = db.Users.Single(u => u.Id == user.Id);
                        userDb.DriverLicense += "D,";
                        db.SaveChanges();
                    }
                    text = "✔ Вы получили права категории D!";
                    sender.Text(text, msg.ChatId, kb.Build());
                }

                return;
            }

            if (q != 0)
            {
                var backQuestion = Questions[q - 1];
                if (response == backQuestion.Response)
                {
                    countTrueResponse += 1;
                }
            }
            else
            {
                api.Users.RemoveMoney(user.Id, 10000);
            }
            var question = Questions[q];

            text += $"❗| Вопрос №{q + 1}";
            text += $"\n❓| {question.Question}";
            int counter = 0;

            foreach (var resp in question.Responses)
            {
                counter++;
                text += $"\n ▶ {counter}) {resp}";
            }

            kb.AddButton($"{q} - Ответ 1", "catD", new List <string>()
            {
                $"{q + 1}", "1", countTrueResponse.ToString()
            });
            kb.AddButton($"{q} - Ответ 2", "catD", new List <string>()
            {
                $"{q + 1}", "2", countTrueResponse.ToString()
            });
            kb.AddLine();
            kb.AddButton($"{q} - Ответ 3", "catD", new List <string>()
            {
                $"{q + 1}", "3", countTrueResponse.ToString()
            });
            kb.AddButton($"{q} - Ответ 4", "catD", new List <string>()
            {
                $"{q + 1}", "4", countTrueResponse.ToString()
            });

            kb.AddLine();
            kb.AddButton("❌ Отменить экзамен", "drivingschool", color: KeyboardButtonColor.Negative);

            kb.SetOneTime();


            sender.Text(text, msg.ChatId, kb.Build());
        }
예제 #13
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            long carid = 0;

            if (msg.Payload is null)
            {
                carid = long.Parse(msg.Text.Split(" ")[1]);
            }
            else
            {
                carid = long.Parse(msg.Payload.Arguments[0]);
            }


            var file   = File.ReadAllText("AdminsConfig.json");
            var admins = JsonConvert.DeserializeObject <Models.AdminsModels>(file);

            bool isAdmin = admins.Users.Any(u => u == msg.MessageVK.FromId);

            using (var db = new BotData())
            {
                var car = db.Cars.SingleOrDefault(c => c.CarId == carid);



                var adminText = string.Empty;

                if (isAdmin)
                {
                    adminText = $"\n ⚙ ID автомобиля: {carid}";
                }


                var tuningText = string.Empty;

                var tunings = car.TuningPacks.Split(",");
                var ids     = new List <long>();
                foreach (var tuning in tunings)
                {
                    if (tuning != "")
                    {
                        ids.Add(long.Parse(tuning));
                    }
                }

                var tuningsT = new List <TuningPack>();

                foreach (var id in ids)
                {
                    var t = db.TuningPacks.SingleOrDefault(t => t.PackId == id);
                    if (t != null)
                    {
                        tuningsT.Add(t);
                    }
                }


                foreach (var pack in tuningsT)
                {
                    var packId = string.Empty;
                    if (isAdmin)
                    {
                        packId = $"({pack.PackId})";
                    }
                    tuningText += $"🔶 {pack.Name} - {pack.Price.ToString("N1").Split(",")[0]} ₽ {packId}\n";
                }

                long priceRub  = 0;
                long priceDoll = 0;
                long priceEuro = 0;

                string priceStr = "";

                var courseText = File.ReadAllText("CourceConfig.json");
                var course     = JsonConvert.DeserializeObject <CourseModel>(courseText);

                if (car.Currency == 1) //руб
                {
                    priceRub  = car.Price;
                    priceDoll = Convert.ToInt64(Convert.ToSingle(car.Price) / course.Dollar);
                    priceEuro = Convert.ToInt64(Convert.ToSingle(car.Price) / course.Euro);
                    priceStr  = $"{priceRub.ToString("N1").Split(",")[0]}₽";
                }
                else if (car.Currency == 2)  //долл
                {
                    priceRub  = Convert.ToInt64(course.Dollar * Convert.ToSingle(car.Price));
                    priceDoll = car.Price;
                    priceEuro = Convert.ToInt64(Convert.ToSingle(priceRub) / course.Euro);
                    priceStr  = $"{priceRub.ToString("N1").Split(",")[0]}₽ (${priceDoll.ToString("N1").Split(",")[0]})";
                }
                else if (car.Currency == 3)  //евро
                {
                    priceRub  = Convert.ToInt64(course.Euro * Convert.ToSingle(car.Price));
                    priceEuro = car.Price;
                    priceDoll = Convert.ToInt64(Convert.ToSingle(priceRub) / course.Dollar);
                    priceStr  = $"{priceRub.ToString("N1").Split(",")[0]}₽ ({priceEuro.ToString("N1").Split(",")[0]}€)";
                }

                var price1 = Convert.ToDecimal(priceRub);

                var price2 = Convert.ToInt64(Decimal.Multiply(price1, decimal.Parse("0,84")));
                var price3 = Convert.ToInt64(Decimal.Multiply(price1, decimal.Parse("0,7")));


                var showroomStr = "";

                if (car.Showroom == 1)
                {
                    showroomStr = "Европа";
                }
                else if (car.Showroom == 2)
                {
                    showroomStr = "Япония";
                }
                else if (car.Showroom == 3)
                {
                    showroomStr = "Toyota";
                }
                else if (car.Showroom == 4)
                {
                    showroomStr = "Mercedes-Benz";
                }
                else if (car.Showroom == 5)
                {
                    showroomStr = "BMW";
                }
                else if (car.Showroom == 6)
                {
                    showroomStr = "Лада";
                }
                else if (car.Showroom == 7)
                {
                    showroomStr = "Яхты";
                }
                else if (car.Showroom == 8)
                {
                    showroomStr = "Вертолеты";
                }
                else if (car.Showroom == 9)
                {
                    showroomStr = "Америка";
                }
                else if (car.Showroom == 10)
                {
                    showroomStr = "Коммерческий";
                }

                var text = $"🚘 Модель: {car.Model}" +
                           $"\n 💵 Цена с салона: {priceStr}" +
                           $"\n 💰 Цена с б/у: {price2.ToString("N1").Split(",")[0]}₽" +
                           $"\n 💳 Слив с б/у: {price3.ToString("N1").Split(",")[0]}₽" +
                           $"\n 💎 Цена за донат-валюту: {car.PriceDonate.ToString("N1").Split(",")[0]}" +
                           $"\n 🚗 Автосалон: {showroomStr}" +
                           $"\n ⚙ Максимальная скорость: {car.MaxSpeed}" +
                           $"{adminText}" +
                           $"\n " +
                           $"\n 🔧 Комплекты тюнинга:" +
                           $"\n {tuningText}";

                var kb = new KeyboardBuilder(bot);
                kb.AddButton("✔ Добавить в цель", "addtarget", new List <string>()
                {
                    car.CarId.ToString()
                });
                kb.AddLine();
                kb.AddButton("🔙 В меню", "menu");
                kb.SetOneTime();

                if (msg.ChatId != msg.MessageVK.FromId)
                {
                    sender.TextImage(text, msg.ChatId, car.Image);
                }
                else
                {
                    sender.TextImage(text, msg.ChatId, car.Image, kb.Build());
                }
            }
        }
예제 #14
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            StaticContent.UsersCommand.Remove(msg.MessageVK.FromId.Value);
            bool isChat = msg.ChatId != msg.MessageVK.FromId.Value;

            using (var db = new BotData())
            {
                var target = db.Targets.SingleOrDefault(t => t.UserId == msg.MessageVK.FromId);
                if (target is null)
                {
                    var kb1 = new KeyboardBuilder(bot);
                    kb1.AddButton("🔙 В меню", "menu");
                    kb1.SetOneTime();

                    if (isChat)
                    {
                        sender.Text("✈ Вы пока что не установили цель", msg.ChatId);
                    }
                    else
                    {
                        sender.Text("✈ Вы пока что не установили цель", msg.ChatId, kb1.Build());
                    }
                    return;
                }

                var car = db.Cars.SingleOrDefault(c => c.CarId == target.CarId);

                long priceRub = 0;

                long priceDoll = 0;
                long priceEuro = 0;

                var courseText = File.ReadAllText("CourceConfig.json");
                var course     = JsonConvert.DeserializeObject <CourseModel>(courseText);

                if (car.Currency == 1) //руб
                {
                    priceRub  = car.Price;
                    priceDoll = Convert.ToInt64(Convert.ToSingle(car.Price) / course.Dollar);
                    priceEuro = Convert.ToInt64(Convert.ToSingle(car.Price) / course.Euro);
                }
                else if (car.Currency == 2)  //долл
                {
                    priceRub  = Convert.ToInt64(course.Dollar * Convert.ToSingle(car.Price));
                    priceDoll = car.Price;
                    priceEuro = Convert.ToInt64(Convert.ToSingle(priceRub) / course.Euro);
                }
                else if (car.Currency == 3)  //евро
                {
                    priceRub  = Convert.ToInt64(course.Euro * Convert.ToSingle(car.Price));
                    priceEuro = car.Price;
                    priceDoll = Convert.ToInt64(Convert.ToSingle(priceRub) / course.Dollar);
                }

                var kb = new KeyboardBuilder(bot);
                kb.AddButton("➕ Изменить собранную сумму", "targetedit");
                kb.AddLine();
                kb.AddButton("🔙 В меню", "menu");
                kb.SetOneTime();

                var text = $"✈ Ваша цель: " +
                           $"\n 🚗 {car.Model}" +
                           $"\n 💎 Собрано {target.Count.ToString("N1")} из {priceRub.ToString("N1")} ₽ ({target.Count/(priceRub/100)}%)";

                if (isChat)
                {
                    sender.Text(text, msg.ChatId);
                }
                else
                {
                    sender.Text(text, msg.ChatId, kb.Build());
                }
            }
        }
예제 #15
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            var file   = File.ReadAllText("AdminsConfig.json");
            var admins = JsonConvert.DeserializeObject <Models.AdminsModels>(file);

            bool isAdmin = admins.Users.Any(u => u == msg.MessageVK.FromId);



            int offset, server = 0;

            if (msg.Text.Split("-")[0] == "com")
            {
                offset = (int.Parse(msg.Text.Split("-")[1]) - 1) * 10;
                server = int.Parse(msg.Text.Split("-")[2]);
            }
            else
            {
                var argument = msg.Payload.Arguments[0];
                offset = int.Parse(msg.Payload.Arguments[1]);
                server = int.Parse(argument);
            }


            var vkNet = new VkApi();

            vkNet.Authorize(new ApiAuthParams()
            {
                AccessToken = "e7980081cccad8d0df1ce342355da76e6e0d8de37509d76fb08ff1f065823dc19e5f4ed7f4578314cc772"
            });

            var ids = new List <long>();
            var kb  = new KeyboardBuilder(bot);

            using (var db = new BotData())
            {
                var ads = db.Ads.Where(a => a.Server == server);

                string s          = string.Empty;
                var    stringText = string.Empty;

                if (ads.Count() != 0)
                {
                    bool isAddNextCommand = true;
                    int  counter          = 0;
                    for (int i = offset; i < offset + 10; i++)
                    {
                        try
                        {
                            var ad = ads.OrderByDescending(a => a.DateCreate).ToList()[i];
                            var id = $"| ID:{ad.AdId}";
                            ids.Add(ad.Owner);
                            stringText += $"💎[{i}] -{ad.Owner}- сервер - {ad.Server} {id} : {ad.Text} \n";
                            kb.AddButton(i.ToString(), "showad", new List <string>()
                            {
                                ad.AdId.ToString()
                            });

                            if (counter == 4)
                            {
                                kb.AddLine();
                                counter = 0;
                            }
                        }
                        catch
                        {
                            isAddNextCommand = false;
                        }
                    }

                    kb.AddLine();
                    kb.SetOneTime();


                    if (offset > 0)
                    {
                        kb.AddButton("⏮ Назад", "adsFilter", new List <string>()
                        {
                            server.ToString(), $"{offset-10}"
                        });
                    }
                    if (isAddNextCommand)
                    {
                        kb.AddButton("⏭ Вперед", "adsFilter", new List <string>()
                        {
                            server.ToString(), $"{offset + 10}"
                        });
                    }


                    var usrs = vkNet.Users.Get(ids);

                    foreach (var usr in usrs)
                    {
                        stringText = stringText.Replace($"-{usr.Id}-", $"{usr.FirstName} {usr.LastName}");
                    }
                }
                else
                {
                    stringText += "Объявлений нет.";
                }

                kb.AddLine();
                kb.AddButton("🔙 Назад  в меню", "ads");

                if (msg.ChatId != msg.MessageVK.FromId)
                {
                    sender.Text($"🎫 Объявления: \n {stringText}", msg.ChatId);
                }
                else
                {
                    sender.Text($"🎫 Объявления: \n {stringText}", msg.ChatId, kb.Build());
                }
            }
        }
예제 #16
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);

            if (UserRace.All(r => r.UserId != user.Id))
            {
                UserRace.Add(new RaceUser()
                {
                    UserId = user.Id,
                    Users  = new List <long>()
                });
            }

            if (user.OnWork)
            {
                sender.Text("❌ Вы не можете идти в гонку, пока находитесь на работе, дождитесь завершения и возвращайтесь!", msg.ChatId);
                return;
            }
            var garageUser = Main.Api.Garages.GetGarage(user.Id);

            sender.Text("⌛ Подождите, мы подбираем Вам противника", msg.ChatId);

            var  enemys = new List <RaceFindModel>();
            long scoreUser;

            using (var db = new Database())
            {
                var userCar = db.Cars.Single(c => c.Id == garageUser.SelectCar);
                scoreUser = userCar.Power + userCar.Weight;
                foreach (var enemyGarage in db.Garages)
                {
                    if (enemyGarage.SelectCar != 0)
                    {
                        if (enemyGarage.UserId != user.Id)
                        {
                            if (enemyGarage.SelectCar != -1)
                            {
                                var carEnemy   = db.Cars.Single(c => c.Id == enemyGarage.SelectCar);
                                var scoreEnemy = carEnemy.Power + carEnemy.Weight;
                                var rusr       = UserRace.Single(r => r.UserId == user.Id);
                                if (rusr.Users.Any(r => r != enemyGarage.UserId))
                                {
                                    enemys.Add(new RaceFindModel()
                                    {
                                        UserId = enemyGarage.UserId, Score = scoreEnemy
                                    });
                                }
                            }
                        }
                    }
                }
            }

            RaceFindModel ememyRaceModel = null;

            for (long i = 1; i < 4; i++)
            {
                for (long b = 0; b < 100; b++)
                {
                    var enemy = enemys.SingleOrDefault(e => e.Score == scoreUser + b * i);
                    ememyRaceModel = enemy;
                    if (enemy != null)
                    {
                        var garage = Main.Api.Garages.GetGarage(enemy.UserId);
                        if (garage.SelectCar != 0)
                        {
                            break;
                        }
                    }
                }

                if (ememyRaceModel is null)
                {
                    for (long b = 0; b < 100; b++)
                    {
                        var enemy = enemys.SingleOrDefault(e => e.Score == scoreUser - i);
                        ememyRaceModel = enemy;
                        if (enemy != null)
                        {
                            var garage = Main.Api.Garages.GetGarage(enemy.UserId);
                            if (garage.SelectCar != 0)
                            {
                                break;
                            }
                        }
                    }
                }
                else
                {
                    break;
                }
            }

            if (ememyRaceModel is null)
            {
                ememyRaceModel = new RaceFindModel()
                {
                    Score = 0, UserId = -2
                };
            }


            var kb = new KeyboardBuilder(bot);

            kb.SetOneTime();
            kb.AddButton("🏎 Начать гонку", "RaceStart", new List <string>()
            {
                "1", $"{ememyRaceModel.UserId}"
            });

            sender.Text("✔ Мы нашли Вам противника", msg.ChatId, kb.Build());
        }
예제 #17
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }
            var kb = new KeyboardBuilder(bot);

            kb.AddButton("Европа", "showroom", new List <string>()
            {
                "1", "0"
            });

            kb.AddButton("Япония", "showroom", new List <string>()
            {
                "2", "0"
            });
            kb.AddButton("Toyota", "showroom", new List <string>()
            {
                "3", "0"
            });
            kb.AddLine();
            kb.AddButton("Mercedes-Benz", "showroom", new List <string>()
            {
                "4", "0"
            });
            kb.AddButton("BMW", "showroom", new List <string>()
            {
                "5", "0"
            });
            kb.AddButton("Лада", "showroom", new List <string>()
            {
                "6", "0"
            });
            kb.AddButton("Яхты", "showroom", new List <string>()
            {
                "7", "0"
            });
            kb.AddLine();
            kb.AddButton("Вертолеты", "showroom", new List <string>()
            {
                "8", "0"
            });
            kb.AddButton("Америка", "showroom", new List <string>()
            {
                "9", "0"
            });
            kb.AddButton("Коммерческий", "showroom", new List <string>()
            {
                "10", "0"
            });
            kb.AddButton("🔙 Назад ", "searchmenu");
            kb.SetOneTime();

            sender.Text("Выберите необходимый автосалон.", msg.ChatId, kb.Build());
        }
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            //проверка и подписка на рассылку, если пользователь пользуется ботом первый раз.
            var usrs1 = JsonConvert.DeserializeObject <MailingModel>(File.ReadAllText("MailingUsers.json"));

            if (usrs1.Users.All(u => u.UserId != msg.MessageVK.FromId.Value))
            {
                usrs1.Users.Add(new ValuesMail()
                {
                    IsActive = true,
                    UserId   = msg.MessageVK.FromId.Value
                });

                File.WriteAllText("MailingUsers.json", JsonConvert.SerializeObject(usrs1));
            }

            if (msg.Text.Split(" ")[1].ToLower() != "объявление" && msg.Payload == null)
            {
                return;
            }


            if (msg.ChatId != msg.MessageVK.FromId)
            {
                sender.Text("⛔ Эта команда недоступна в беседе", msg.ChatId);
                return;
            }

            using (var db = new BotData())
            {
                var adsFromUser = db.Ads.Where(ad => ad.Owner == msg.MessageVK.FromId);
                if (adsFromUser.Count() == 3)
                {
                    sender.Text("⛔ Вы уже создали 3 объявления.", msg.ChatId);
                    return;
                }
            }

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("1", "excecuteCommand", new List <string>()
            {
                "adsAdd", "1"
            });
            kb.AddButton("2", "excecuteCommand", new List <string>()
            {
                "adsAdd", "2"
            });
            kb.AddButton("3", "excecuteCommand", new List <string>()
            {
                "adsAdd", "3"
            });
            kb.AddLine();
            kb.AddButton("4", "excecuteCommand", new List <string>()
            {
                "adsAdd", "4"
            });
            kb.AddButton("5", "excecuteCommand", new List <string>()
            {
                "adsAdd", "5"
            });
            kb.AddButton("6", "excecuteCommand", new List <string>()
            {
                "adsAdd", "6"
            });
            kb.SetOneTime();

            sender.Text("✔ Выберите сервер", msg.ChatId, kb.Build());
        }
예제 #19
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);

            if (msg.Payload?.Arguments is null)
            {
                var text = $"⚜ Количество фишек: {user.Chips}"
                           + "\n🃏 Выберите игру на клавиатуре";

                var kb = new KeyboardBuilder(bot);

                kb.AddButton("🎲 Рулетка", "casino", new List <string>()
                {
                    "1"
                });
                kb.AddLine();
                kb.AddButton("⚜ Купить фишки", "buychips", color: KeyboardButtonColor.Positive);
                kb.AddButton("💰 Обменять фишки", "exchangechips", color: KeyboardButtonColor.Positive);
                kb.AddLine();
                kb.AddButton(ButtonsHelper.ToHomeButton());
                sender.Text(text, msg.ChatId, kb.Build());
            }
            else
            {
                if (msg.Payload.Arguments[0] == "1")
                {
                    if (msg.Payload.Arguments.Count < 2)
                    {
                        var text = "❓ Выберите цвет, на который вы хотите сделать ставку." +
                                   "\n ❗ При выгрыше Ваша ставка увеличивается в 2 раза. При ставке на зеленое в 16 раз.";

                        var kb = new KeyboardBuilder(bot);
                        kb.SetOneTime();
                        kb.AddButton("⬛ Черное 1 фишка", "casino", new List <string>()
                        {
                            "1", "1", "1"
                        });
                        kb.AddButton("🟥 Красное 1 фишка", "casino", new List <string>()
                        {
                            "1", "2", "1"
                        });
                        kb.AddButton("🟩 Зеленое 1 фишка", "casino", new List <string>()
                        {
                            "1", "3", "1"
                        });
                        kb.AddLine();
                        kb.AddButton("⬛ Черное 3 фишки", "casino", new List <string>()
                        {
                            "1", "1", "3"
                        });
                        kb.AddButton("🟥 Красное 3 фишки", "casino", new List <string>()
                        {
                            "1", "2", "3"
                        });
                        kb.AddButton("🟩 Зеленое 3 фишки", "casino", new List <string>()
                        {
                            "1", "3", "3"
                        });
                        kb.AddLine();
                        kb.AddButton("⬛ Черное 5 фишки", "casino", new List <string>()
                        {
                            "1", "1", "5"
                        });
                        kb.AddButton("🟥 Красное 5 фишки", "casino", new List <string>()
                        {
                            "1", "2", "5"
                        });
                        kb.AddButton("🟩 Зеленое 5 фишки", "casino", new List <string>()
                        {
                            "1", "3", "5"
                        });
                        kb.AddLine();
                        kb.AddButton(ButtonsHelper.ToHomeButton());
                        sender.Text(text, msg.ChatId, kb.Build());
                    }
                    else
                    {
                        var color = msg.Payload.Arguments[1].ToLong();
                        var count = msg.Payload.Arguments[2].ToLong();
                        if (user.Chips < count)
                        {
                            sender.Text("❌ У Вас недостаточно фишек для ставки!", msg.ChatId);
                            return;
                        }

                        using (var db = new Database())
                        {
                            var usr = db.Users.Single(u => u.Id == user.Id);
                            usr.Chips -= count;
                            db.SaveChanges();
                        }

                        var r = new Random();

                        int number = r.Next(1, 4);

                        sender.Text("♻ Вы сделали ставку. Крутим рулетку...", msg.ChatId);
                        Thread.Sleep(TimeSpan.FromSeconds(5));

                        if (number == 1 && color == 1)
                        {
                            using (var db = new Database())
                            {
                                var usr = db.Users.Single(u => u.Id == user.Id);
                                user.Chips += count * 2;
                                db.SaveChanges();
                            }

                            var kb = new KeyboardBuilder(bot);
                            kb.AddButton("🎲 Назад в казино", "casino");
                            kb.AddLine();
                            kb.AddButton("♣ Назад в рулетку", "casino", new List <string>()
                            {
                                "1"
                            });
                            kb.AddLine();
                            kb.AddButton(ButtonsHelper.ToHomeButton());
                            sender.Text($"🎉 Вы выграли {count *2} фишек, поставив на черное!", msg.ChatId, kb.Build());
                        }
                        else if (number == 2 && color == 2)
                        {
                            using (var db = new Database())
                            {
                                var usr = db.Users.Single(u => u.Id == user.Id);
                                user.Chips += count * 2;
                                db.SaveChanges();
                            }

                            var kb = new KeyboardBuilder(bot);
                            kb.AddButton("🎲 Назад в казино", "casino");
                            kb.AddLine();
                            kb.AddButton("♣ Назад в рулетку", "casino", new List <string>()
                            {
                                "1"
                            });
                            kb.AddLine();
                            kb.AddButton(ButtonsHelper.ToHomeButton());
                            sender.Text($"🎉 Вы выграли {count *2} фишек, поставив на красное!", msg.ChatId, kb.Build());
                        }
                        else if (number == 4)
                        {
                            var r2      = new Random();
                            var number2 = r2.Next(1, 8);

                            if (number2 == 5)
                            {
                                using (var db = new Database())
                                {
                                    var usr = db.Users.Single(u => u.Id == user.Id);
                                    user.Chips += count * 16;
                                    db.SaveChanges();
                                }

                                var kb = new KeyboardBuilder(bot);
                                kb.AddButton("🎲 Назад в казино", "casino");
                                kb.AddLine();
                                kb.AddButton("♣ Назад в рулетку", "casino", new List <string>()
                                {
                                    "1"
                                });
                                kb.AddLine();
                                kb.AddButton(ButtonsHelper.ToHomeButton());
                                sender.Text($"🎉 Вы выграли {count *16} фишек, поставив на зеленое!", msg.ChatId, kb.Build());
                            }
                        }
                        else
                        {
                            var kb = new KeyboardBuilder(bot);
                            kb.AddButton("🎲 Назад в казино", "casino");
                            kb.AddLine();
                            kb.AddButton("♣ Назад в рулетку", "casino", new List <string>()
                            {
                                "1"
                            });
                            kb.AddLine();
                            kb.AddButton(ButtonsHelper.ToHomeButton());
                            sender.Text($"😥 Вы проиграли! Может попробуйте ещё раз, точно повезёт!", msg.ChatId, kb.Build());
                        }
                    }
                }
            }
        }