コード例 #1
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    idEngine = long.Parse(msg.Payload.Arguments[0]);
            var    idCar    = long.Parse(msg.Payload.Arguments[1]);
            Engine engine   = null;
            Car    car      = null;

            using (var db = new Database())
            {
                engine = db.Engines.Single(e => e.Id == idEngine);
                if (engine.CarId != 0)
                {
                    car = db.Cars.Single(c => c.Id == engine.CarId);
                }
            }

            var text = $"⚙ Двигатель {engine.Name}" +
                       $"\n ⚡ Мощность: {engine.Power}" +
                       $"\n ⚖ Вес: {engine.Weight}" +
                       $"{(car != null? $"\n 🚗 Установлен в {car.Manufacturer} {car.Model}":string.Empty)}" +
                       $"\n ❓ Выберите действие на клавиатуре";

            var kb = new KeyboardBuilder(bot);

            if (car != null)
            {
                kb.AddButton("🚗 Снять с автомобиля", "deleteengine",
                             new List <string>()
                {
                    idEngine.ToString(), car.Id.ToString()
                });
                kb.AddLine();
            }
            else
            {
                kb.AddButton("🚗 Установить в автомобиль", $"{(idCar !=0? "setengine":"garage" )}", new List <string>()
                {
                    idCar.ToString(), idEngine.ToString()
                });
            }

            kb.AddButton("↩ Назад к двигателям", "engines");

            sender.Text(text, msg.ChatId, kb.Build());
        }
コード例 #2
0
ファイル: VipDonateCommand.cs プロジェクト: Fooxboy/HydraBot
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            var user = Main.Api.Users.GetUser(msg);
            var text = string.Empty;
            var kb   = new KeyboardBuilder(bot);

            if (msg.Payload.Arguments[0] == "0")
            {
                text = "👑 VIP привелегия:" +
                       "\n ❓ У вас появится возможность:" +
                       "\n ✒ Максимально символов в нике - 20." +
                       "\n 💳 Вклады в банке до 75 млн." +
                       "\n 📱 Кастомный номер телефона" +
                       "\n ⭐ Получение X2 опыта в гонках" +
                       "\n 💰 Получение Х2 приза в гонках" +
                       "\n" +
                       "\n ✔ Цена: 45 донат рублей.";
                kb = new KeyboardBuilder(bot);
                kb.AddButton("💲 Купить", "vipDonate", new List <string>()
                {
                    "1"
                }, color: KeyboardButtonColor.Positive);
                kb.AddLine();
            }
            else
            {
                if (user.DonateMoney < 45)
                {
                    text = "❌ У Вас недостаточно донат рублей для покупки.";
                }
                else
                {
                    if (user.Access >= 1)
                    {
                        text = "❌ У Вас уже куплен VIP или привлегия выше.";
                    }
                    else
                    {
                        using (var db = new Database())
                        {
                            var usr = db.Users.Single(u => u.Id == user.Id);
                            usr.DonateMoney -= 45;
                            usr.Access       = 1;
                            usr.Prefix       = "VIP";
                            db.SaveChanges();
                        }

                        text = "👑 Поздравляю с покупкой! Вы теперь VIP!";
                    }
                }
            }

            kb.AddButton("↩ К донатам", "donate");
            kb.AddLine();
            kb.AddButton(ButtonsHelper.ToHomeButton());

            sender.Text(text, msg.ChatId, kb.Build());
        }
コード例 #3
0
ファイル: AddCarCommand.cs プロジェクト: Fooxboy/HydraBot
        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);
        }
コード例 #4
0
        public KeyboardBuilder DialogInDevelopment()
        {
            var keyboard = new KeyboardBuilder();

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

            return(keyboard);
        }
コード例 #5
0
        IMenuAudioReplyMarkup IKeyboardBuilder <IMenuAudioReplyMarkup> .Inline(Action <IInlineKeyboardBuilder> buildAction)
        {
            KeyboardBuilder keyboard = new KeyboardBuilder();

            buildAction(keyboard);
            keyboard.UpdateInline(CommandService.UpdateKeyboardRows(keyboard.InlineRows));
            ReplyMarkup = new InlineKeyboardMarkup(keyboard.InlineRows);
            return(this);
        }
コード例 #6
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 user = Main.Api.Users.GetUser(msg);

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

            code = msg.Text.Replace("code", "").Replace("exe", "");
            code = code.Replace("&quot;", "\"");
            code = code.Replace("&lt;", "<");
            code = code.Replace("&gt;", ">");

            var text = "Result: ";

            try
            {
                var result = CSharpScript.EvaluateAsync($"using System; " +
                                                        $"using HydraBot; " +
                                                        $"using HydraBot.BotApi;" +
                                                        $"using HydraBot.Helpers;" +
                                                        $"using HydraBot.Services;" +
                                                        $"using HydraBot.Models;" +
                                                        $"using System.Linq;" +
                                                        $"using System.IO;" +
                                                        $"using System.Text; {code}", ScriptOptions.Default.WithReferences(typeof(Main).Assembly));
                if (result == null)
                {
                    text += "null";
                }
                else
                {
                    text += result.Result;
                }
            }
            catch (Exception e)
            {
                text += e.ToString();
            }

            sender.Text(text, msg.ChatId);
            GC.Collect();
        }
コード例 #7
0
    // Use this for initialization
    void Start()
    {
        keyboardBuilder = GetComponent<KeyboardBuilder> ();
        entryFieldBuilder = GetComponent<EntryFieldBuilder> ();
        wordBuilder = GetComponent<WordBuilder> ();

        BuildGame ();
        //LoadDictionary ();
    }
コード例 #8
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 text = "🚗 Автошкола." +
                       $"{(user.DriverLicense != "" ? $"\n📃 Ваши категории прав: {user.DriverLicense}" : "")}" +
                       "\n ❓ Выберите категорию на клавиатуре ниже";

            var kb = new KeyboardBuilder(bot);

            if (!(user.DriverLicense.Split(",").Any(s => s == "A")))
            {
                kb.AddButton("A (1.000 руб.)", "catA", new List <string> {
                    "0", "0", "0"
                });
            }
            if (!(user.DriverLicense.Split(",").Any(s => s == "B")))
            {
                kb.AddButton("B (3.500 руб.)", "catB", new List <string> {
                    "0", "0", "0"
                });
            }
            if (!(user.DriverLicense.Split(",").Any(s => s == "A" || s == "B")))
            {
                kb.AddLine();
            }
            if (!(user.DriverLicense.Split(",").Any(s => s == "C")))
            {
                kb.AddButton("C (8.500 руб.)", "catC", new List <string> {
                    "0", "0", "0"
                });
            }
            if (!(user.DriverLicense.Split(",").Any(s => s == "D")))
            {
                kb.AddButton("D (10.000 руб.)", "catD", new List <string> {
                    "0", "0", "0"
                });
            }
            if (!(user.DriverLicense.Split(",").Any(s => s == "C" || s == "D")))
            {
                kb.AddLine();
            }
            kb.AddButton(ButtonsHelper.ToHomeButton());
            sender.Text(text, msg.ChatId, kb.Build());
        }
コード例 #9
0
        IMenuAudioReplyMarkup IKeyboardBuilder <IMenuAudioReplyMarkup> .Reply(Action <IReplyKeyboardBuilder> buildAction)
        {
            KeyboardBuilder keyboard = new KeyboardBuilder();

            buildAction(keyboard);
            keyboard.UpdateReply(CommandService.UpdateKeyboardRows(keyboard.ReplyRows));
            ReplyMarkup = new ReplyKeyboardMarkup(keyboard.ReplyRows);
            return(this);
        }
コード例 #10
0
        private void GroupLeaveHandler()
        {
            //Default menu
            KeyboardBuilder key = new KeyboardBuilder();

            key.AddButton("Привязать аккаунт", null, agree);
            key.AddButton("Удалить привязку", null, decine);
            MessageKeyboard keyboard = key.Build();

            try
            {
                while (true) // Бесконечный цикл, получение обновлений
                {
                    api.Authorize(new ApiAuthParams()
                    {
                        AccessToken = userToken,
                    });
                    longPoolServerResponse = new LongPollServerResponse();
                    longPoolServerResponse = api.Groups.GetLongPollServer(groupID); //id группы
                                                                                    //var s = api.Groups.GetLongPollServer(groupID);
                    BotsLongPollHistoryResponse poll = null;
                    try
                    {
                        poll = api.Groups.GetBotsLongPollHistory(
                            new BotsLongPollHistoryParams()

                        {
                            Server = longPoolServerResponse.Server, Ts = longPoolServerResponse.Ts, Key = longPoolServerResponse.Key, Wait = 25
                        });
                        pts = longPoolServerResponse.Pts;
                        if (poll?.Updates == null)
                        {
                            continue;                        // Проверка на новые события
                        }
                    }
                    catch (Exception ex)
                    {
                        ErrorLogging(ex);
                        ReadError();
                    }
                    foreach (var a in poll.Updates)
                    {
                        if (a.Type == GroupUpdateType.GroupLeave) //Выход из группы
                        {
                            long?userID = a.GroupLeave.UserId;
                            SendMessage("&#128532; Очень жаль(\nЗаходи к нам ещё!&#128281;", userID, keyboard, null);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorLogging(ex);
                ReadError();
            }
        }
コード例 #11
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 kb   = new KeyboardBuilder(bot);

            kb.AddButton("🏁 В раздел гонок", "race");
            kb.AddLine();
            kb.AddButton(ButtonsHelper.ToHomeButton());


            if (user.Race <= 0)
            {
                sender.Text($"❌ У Вас нет новых запросов на гонку", msg.ChatId, kb.Build());
                return;
            }

            using (var db = new Database())
            {
                var race = db.Races.FirstOrDefault(r => r.Enemy == user.Id && r.IsRequest == true);
                race.IsRequest = false;
                race.Winner    = -1;
                var  helper  = new UsersHelper();
                var  creator = db.Users.Single(u => u.Id == race.Creator);
                long chatId  = 0;

                if (sender.Platform == MessengerPlatform.Vkontakte)
                {
                    chatId = creator.VkId;
                }
                else
                {
                    chatId = creator.TgId;
                }

                creator.Race = 0;

                sender.Text($"🏁 Пользователь {helper.GetLink(creator)} отклонил ваше предложение!", chatId, kb.Build());

                db.SaveChanges();
            }

            sender.Text($"✔ Вы не приняли гонку", msg.ChatId, kb.Build());
        }
コード例 #12
0
ファイル: VkCommands.cs プロジェクト: Amchik/VKBugTrackerBot
        public void BookmarksCommand()
        {
            Int32 startIndex = 0;

            if (Context.Arguments.Length == 1)
            {
                try
                {
                    startIndex = (Int32.Parse(Context.Arguments[0]) - 1) * 3;
                }
                catch
                {
                    Context.Reply(new MessagesSendParams
                    {
                        RandomId = new Random().Next(),
                        Message  = $"Использование: /bookmarks [page (int)]"
                    });
                    return;
                }
            }
            else
            {
                Context.Reply(new MessagesSendParams
                {
                    RandomId = new Random().Next(),
                    Message  = $"Использование: /bookmarks [page (int)]"
                });
                return;
            }
            KeyboardBuilder kb = new KeyboardBuilder(false);

            kb.SetInline();
            foreach (var bookmark in Context.User.Bookmarks.Skip(startIndex).Take(3))
            {
                kb.AddButton(new MessageKeyboardButtonAction
                {
                    Type    = KeyboardButtonActionType.OpenLink,
                    Label   = new String($"{bookmark.Product}: {bookmark.Name}".Take(40).ToArray()),
                    Link    = new Uri($"https://vk.com/bug{bookmark.Id}"),
                    Payload = ""
                });
                kb.AddButton(new MessageKeyboardButtonAction
                {
                    Type    = KeyboardButtonActionType.Text,
                    Label   = VkBot.REMOVE_FROM_BOOKMARKS,
                    Payload = JsonSerializer.Serialize(new BookmarksEventPayload(BookmarksEventPayload.EventType.Remove, bookmark.Id))
                }, KeyboardButtonColor.Negative);
                kb.AddLine();
            }
            Context.Reply(new MessagesSendParams
            {
                RandomId = new Random().Next(),
                Message  = $"Закладки ({startIndex + 1}-{Math.Min(startIndex + 3, Context.User.Bookmarks.Count)}/{Context.User.Bookmarks.Count})",
                Keyboard = kb.Build()
            });
        }
コード例 #13
0
        private static void MessageMonitoring_OnCommandNotFound(object sender, CommandEventArgs args)
        {
            var             Sender = (MessageMonitoring)sender;
            KeyboardBuilder key    = new KeyboardBuilder();

            key.AddButton("/info", "", KeyboardButtonColor.Primary);
            MessageKeyboard keyboard = key.Build();

            Sender.Helper.SendMessage("Такой команды не существует напишите /info для помощи", args.Message.FromId.Value, keyboard);
        }
コード例 #14
0
        public async Task ProcessMessage(Message message)
        {
            if (_chatSettingsBotData.ActiveCommand != ActiveCommand.WeatherApi)
            {
                var inlineKeyboard = new InlineKeyboardMarkup(new[]
                {
                    new[]
                    {
                        InlineKeyboardButton.WithCallbackData("Samara", "Samara"),
                        InlineKeyboardButton.WithCallbackData("Saint-Petersburg", "Saint Petersburg"),
                        InlineKeyboardButton.WithCallbackData("Moscow", "Moscow")
                    }
                });

                _chatSettingsBotData.ActiveCommand = ActiveCommand.WeatherApi;

                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Enter the city or choose from list: ",
                                                              replyMarkup : inlineKeyboard);

                return;
            }

            var uri      = $"{BotConstants.Weather.Url}?q={message.Text}&appid={BotConstants.Weather.ApiKey}";
            var client   = new RestClient(BotConstants.Weather.Host);
            var request  = new RestRequest(uri, DataFormat.Json);
            var response = await client.ExecuteAsync(request);

            var json = JObject.Parse(response.Content);

            if (json["cod"].ToString() == "404")
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Unknown city, try again: ");

                return;
            }

            if (json["name"] == null)
            {
                await _botService.Client.SendTextMessageAsync(message.Chat.Id, "Server Error");

                return;
            }

            var city    = json["name"];
            var weather = json["weather"][0]["main"];
            var temp    = Math.Round((double)json["main"]["temp"] - 273.15, 2);
            var wind    = json["wind"]["speed"];
            var result  =
                $"City: {city}, Weather: {weather},{Environment.NewLine}Temperature: {temp} °C, Wind: {wind} m/s";

            _chatSettingsBotData.ActiveCommand = ActiveCommand.Default;

            var exitKeyboard = KeyboardBuilder.CreateExitButton();
            await _botService.Client.SendTextMessageAsync(message.Chat.Id, result, replyMarkup : exitKeyboard);
        }
コード例 #15
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 user = Main.Api.Users.GetUser(msg);

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

                if (user.VkId != 308764786)
                {
                }
            }

            try
            {
                var array = msg.Text.Split(" ");

                var money       = array[1].ToLong();
                var donateMoney = array[2].ToLong();
                var experience  = array[3].ToLong();

                var promocode = new Promocode();

                var promo = string.Empty;
                using (var db = new Database())
                {
                    promocode.Id          = db.Promocodes.Count() + 1;
                    promocode.Text        = new Random().Next(11111, 999999999).ToString();
                    promocode.Money       = money;
                    promocode.DonateMoney = donateMoney;
                    promocode.Experience  = experience;
                    promocode.IsActivate  = false;

                    db.Promocodes.Add(promocode);
                    db.SaveChanges();

                    promo = promocode.Text;
                }

                sender.Text($"✔ Промокод сгенерирован: {promo}", msg.ChatId);
            }
            catch (Exception e)
            {
                sender.Text(e.ToString(), msg.ChatId);
            }
        }
コード例 #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 api  = Main.Api;
            var user = api.Users.GetUser(msg);
            var text = string.Empty;
            var kb   = new KeyboardBuilder(bot);

            if (user.Gang == 0)
            {
                text = "❌ Вы не являетесь участником команды. Но Вы можете создать свою!";
                kb.AddButton("➕ Создать команду (500.000 руб.)", "creategang");
                kb.AddLine();
                kb.AddButton(ButtonsHelper.ToHomeButton());
                sender.Text(text, msg.ChatId, kb.Build());
                return;
            }

            var gang        = api.Gangs.GetGang(user.Gang);
            var creatorUser = api.Users.GetUserFromId(gang.Creator);
            var helper      = new UsersHelper();
            var creatorLink = helper.GetLink(creatorUser);

            text = $"👥 Название команды: {gang.Name}" +
                   $"\n 🔝 ID: {gang.Id}" +
                   $"\n ⭐ Основатель: {creatorLink}" +
                   $"\n 📖 Участники:";

            foreach (var m in gang.Members)
            {
                var member = api.Users.GetUserFromId(m);
                text += $"\n ▶ {helper.GetLink(member)}";
            }

            kb.AddButton("🔁 Переименовать команду", "renamegang");
            kb.AddLine();
            kb.AddButton("💱 Передать команду", "transfergang");
            kb.AddLine();
            kb.AddButton("❌ Удалить команду", "deletegang", color: KeyboardButtonColor.Negative);
            kb.AddLine();
            kb.AddButton(ButtonsHelper.ToHomeButton());
            sender.Text(text, msg.ChatId, kb.Build());
        }
コード例 #17
0
ファイル: Printing.cs プロジェクト: darknessOfficial/VK-Bot
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            var kb = new KeyboardBuilder(bot);

            kb.AddButton("✅ Печать на баннере", "BannerPrinting", color: KeyboardButtonColor.Default);
            kb.AddButton("✅ Печать на плёнке", "FilmPrinting", color: KeyboardButtonColor.Default);
            kb.AddLine();
            kb.AddButton("Вернуться к списку услуг", "services", color: KeyboardButtonColor.Positive);
            kb.AddButton("В главное меню", "show", color: KeyboardButtonColor.Negative);
            sender.Text("Выберите интересующий вас вариант", msg.ChatId, kb.Build());
        }
コード例 #18
0
ファイル: KeyboardService.cs プロジェクト: py6jlb/MoneyVkBot
        public MessageKeyboard GetGlobalKeyboard()
        {
            var keyboard = new KeyboardBuilder()
                           .AddButton("Подтвердить", "кнопка1", KeyboardButtonColor.Primary, "text")
                           .SetInline(false)
                           .AddLine()
                           .AddButton("Отменить", "кнопка2", KeyboardButtonColor.Primary, "text")
                           .Build();

            return(keyboard);
        }
コード例 #19
0
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            var kb = new KeyboardBuilder(bot);

            kb.AddButton("Услуги ✏", "services", color: KeyboardButtonColor.Primary);
            kb.AddButton("Портфолио 💼", "portfolio", color: KeyboardButtonColor.Primary);
            kb.AddLine();
            kb.AddButton("О нас ℹ", "info", color: KeyboardButtonColor.Primary);
            kb.AddButton("Контакты 📞", "contacts", color: KeyboardButtonColor.Primary);
            sender.Text("Всегда рад вам помочь. Что хотите узнать?", msg.ChatId, kb.Build());
        }
コード例 #20
0
        public override void ExecutePL(RootObject update, VkApi client, SqlConnection Con)
        {
            MessagesSendParams @params = new MessagesSendParams();
            var        chatId          = [email protected]_id;
            var        keyboardBuilder = new KeyboardBuilder().Clear();
            UserObject user            = new UserObject();
            UInt64     lvlExp          = 100;
            int        i = 0;

            try
            {
                SqlCommand getUser = new SqlCommand("SELECT * FROM Users WHERE chatId = @chatId;", Con);
                getUser.Parameters.AddWithValue("@chatId", chatId);
                SqlDataReader rgetUser = getUser.ExecuteReader();
                rgetUser.Read();
                user.health = Convert.ToInt32(rgetUser["health"]);
                user.energy = Convert.ToInt32(rgetUser["energy"]);
                rgetUser.Close();

                SqlCommand updTag = new SqlCommand("UPDATE Users SET tag = @tag WHERE chatId = @chatId;", Con);
                updTag.Parameters.AddWithValue("@chatId", chatId);
                updTag.Parameters.AddWithValue("@tag", "Подземелье");
                updTag.ExecuteNonQuery();

                keyboardBuilder
                .AddButton("🤖Ржавый дройд", "selectBossFight-1", KeyboardButtonColor.Default)
                .AddButton("👹Марсианский богомол", "selectBossFight-2", KeyboardButtonColor.Default)
                .AddLine()
                .AddButton("🐌Саблезубая улитка", "selectBossFight-3", KeyboardButtonColor.Default)
                .AddLine()
                .AddButton("🚶‍♂Назад", "selectBack", KeyboardButtonColor.Default);

                @params.Keyboard = keyboardBuilder.Build();
                @params.UserId   = chatId;
                @params.Message  = "Перед тобой 3 пещеры с существами разной силы \n " +
                                   "🤖 Ржавый дройд. Простой противник.⚡15 энергии\n" +
                                   "👹 Марсианский богомол. Средний уровень.⚡30 энергии\n" +
                                   "🐌 Саблезубая улитка. Сильный враг.⚡50 энергии\n" +
                                   "Выбирай противника с умом, не переоцени свои возможности!\n" +
                                   "У тебя " + user.health.ToString() + " здоровья и " + user.energy.ToString() + " энергии";

                @params.RandomId = GetRandomId();
                client.Messages.SendAsync(@params);
            }
            catch (Exception ee)
            {
                @params.Message     = "Ошибка в SelectLevelCommand: " + ee.Message;
                @params.Attachments = null;
                @params.Keyboard    = null;
                @params.UserId      = 59111081;
                @params.RandomId    = GetRandomId();
                client.Messages.SendAsync(@params);
            }
        }
コード例 #21
0
        public void AsReplyKeyboardMarkup_ShouldConvert_WithKeyboardGiven()
        {
            var keyboard = KeyboardBuilder.CreateReplyKeyboard()
                           .BeginRow()
                           .EndRow()
                           .Build()
                           .AsReplyKeyboardMarkup();

            Assert.AreEqual(1, keyboard.Keyboard.Count());
            Assert.AreEqual(0, keyboard.Keyboard.First()
                            .Count());
        }
コード例 #22
0
        public KeyboardBuilder MainMenu()
        {
            var keyboard = new KeyboardBuilder();

            keyboard.AddButton("Новости", "Новости", KeyboardButtonColor.Primary);
            //keyboard.AddButton("Абитуриенту", "расписание", KeyboardButtonColor.Negative);
            keyboard.AddButton("Расписание", "Расписание", KeyboardButtonColor.Primary);
            keyboard.AddLine();
            keyboard.AddButton("Мои настройки", "Мои настройки");

            return(keyboard);
        }
コード例 #23
0
        public void CreateReplyKeyboard_ShouldBuild_WithOneRow()
        {
            var keyboard = KeyboardBuilder.CreateReplyKeyboard()
                           .BeginRow()
                           .AddTextButton("test")
                           .EndRow()
                           .Build();
            var row1    = keyboard.First();
            var button1 = row1.First();

            Assert.AreEqual("test", button1.Text);
        }
コード例 #24
0
        static void MateshaHandler(VkBot sender, MessageReceivedEventArgs args)
        {
            //правильный ответ уже установлен в диалоге, значит бот ожидает ответа в диалоге
            if (args.PeerContext.Vars.ContainsKey("validAnswer"))
            {
                return;
            }

            var message     = args.Message;
            var rand        = new Random();
            var firstNum    = rand.Next(1, 100);
            var secondNum   = rand.Next(1, 100);
            var validAnswer = firstNum + secondNum;

            //устанавливаем правильный ответ в контекст диалога
            args.PeerContext.Vars["validAnswer"] = validAnswer;

            //регистрируем новый обработчик для этого диалога, который будет чувствителен к числам
            sender.TemplateManager.Register(
                new RegexToActionTemplate(MateshaNumberCommand, MateshaNumberHandler, peerId: message.PeerId.Value)
                );

            //рисуем кнопочки
            int buttonsCount          = 10;
            int maxButtonsCountInLine = 4;
            int validButtonIndex      = rand.Next(buttonsCount);
            var keyboard = new KeyboardBuilder();

            for (int i = 0; i < buttonsCount; i++)
            {
                if (i == validButtonIndex)
                {
                    keyboard.AddButton((validAnswer).ToString(), "", KeyboardButtonColor.Primary);
                }
                else
                {
                    keyboard.AddButton(rand.Next(200).ToString(), "", KeyboardButtonColor.Primary);
                }

                if ((i + 1) % maxButtonsCountInLine == 0)
                {
                    keyboard.AddLine();
                }
            }

            sender.Api.Messages.Send(new MessagesSendParams()
            {
                RandomId = Math.Abs(Environment.TickCount),
                PeerId   = args.Message.PeerId,
                Message  = $"сколько будет {firstNum} + {secondNum}?",
                Keyboard = keyboard.Build()
            });
        }
コード例 #25
0
ファイル: NewChatCommand.cs プロジェクト: Fooxboy/HydraBot
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            var user = Main.Api.Users.GetUser(msg);
            var kb   = new KeyboardBuilder(bot);

            kb.AddButton("✉ К сообщениям", "messages");
            var text = "✒ Укажите номер телефона:";

            UsersCommandHelper.GetHelper().Add("newChatCreate", user.Id);

            sender.Text(text, msg.ChatId);
        }
コード例 #26
0
ファイル: Keyboards.cs プロジェクト: caisilus/sbornic_bot
        public static IKeyboardBuilder InputTagAttachingKeyboardBuilder()
        {
            IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();

            keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Отмена",
                Payload = "{\"command\": \"tagsAttachingInputCancel\"}"
            }, KeyboardButtonColor.Negative);
            return(keyboardBuilder);
        }
コード例 #27
0
ファイル: ExpDonateCommand.cs プロジェクト: Fooxboy/HydraBot
        public void Execute(Message msg, IMessageSenderService sender, IBot bot)
        {
            var user = Main.Api.Users.GetUser(msg);
            var text = $"⭐ Укажите, на какое количество донат рублей Вы хотите купить опыта." +
                       $"\n 💲 Ваш баланс донат рублей: {user.DonateMoney} руб." +
                       $"\n ❓ Стоимость: 1 донат рубль = 1000 опыта.";
            var kb = new KeyboardBuilder(bot);

            UsersCommandHelper.GetHelper().Add("expDonate", user.Id);
            kb.AddButton("❌ Отменить", "donate", color:  KeyboardButtonColor.Negative);
            sender.Text(text, msg.ChatId, kb.Build());
        }
コード例 #28
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);
            Skills skills;

            using var db = new Database();
            try
            {
                skills = db.Skillses.Single(u => u.UserId == user.Id);
            }
            catch
            {
                skills        = new Skills();
                skills.UserId = user.Id;
                db.Skillses.Add(skills);
                db.SaveChanges();
            }

            var text = string.Empty;

            var helper = new UsersHelper();

            text = $"🎮 Навыки пользователя {helper.GetLink(user)}";
            if (skills.Driving != 0)
            {
                text += $"\n🚕 Вождение автомобиля: {skills.Driving} уровень.";
            }

            if (skills.Driving == 0)
            {
                text += "🤔 У Вас нет никаких навыков.";
            }

            var kb = new KeyboardBuilder(bot);

            kb.AddButton("🧨 Улучшить навыки", "skillupgrate");
            kb.AddLine();
            kb.AddButton(ButtonsHelper.ToHomeButton());
            sender.Text(text, msg.ChatId, kb.Build());
        }
コード例 #29
0
ファイル: Keyboards.cs プロジェクト: caisilus/sbornic_bot
        public static IKeyboardBuilder PostHandlingKeyboardBuilder()
        {
            /*var buttonHelp = new MessageKeyboardButtonAction()
             * {
             *  Type = KeyboardButtonActionType.Text,
             *  Label = "Помощь",
             *  Payload = "{\"command\": \"postEventHelp\"}",
             * };*/
            var buttonAttachTag = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Прикрепить тэг",
                Payload = "{\"command\": \"attachTag\"}",
            };
            var buttonDetachTag = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Открепить тэг",
                Payload = "{\"command\": \"detachTag\"}"
            };
            var buttonTagsList = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Список тэгов",
                Payload = "{\"command\": \"tagsListPostHandling\"}"
            };
            var buttonSend = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Отправить",
                Payload = "{\"command\": \"sendPost\"}"
            };
            var buttonCancel = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Отмена",
                Payload = "{\"command\": \"cancelPost\"}"
            };
            IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();

            //keyboardBuilder.AddButton(buttonHelp,KeyboardButtonColor.Default);
            //keyboardBuilder.AddLine();
            keyboardBuilder.AddButton(buttonAttachTag, KeyboardButtonColor.Primary);
            keyboardBuilder.AddButton(buttonDetachTag, KeyboardButtonColor.Negative);
            keyboardBuilder.AddLine();
            keyboardBuilder.AddButton(buttonSend, KeyboardButtonColor.Positive);
            keyboardBuilder.AddLine();
            keyboardBuilder.AddButton(buttonTagsList, KeyboardButtonColor.Default);
            keyboardBuilder.AddLine();
            keyboardBuilder.AddButton(buttonCancel, KeyboardButtonColor.Negative);

            return(keyboardBuilder);
        }
コード例 #30
0
ファイル: AddScoreCommand.cs プロジェクト: Fooxboy/HydraBot
        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;
            }

            long userId;
            var  api      = Main.Api;
            var  userSend = api.Users.GetUser(msg);

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

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

            long countScore;

            try
            {
                countScore = long.Parse(msg.Text.Split(" ")[2]);
            }
            catch
            {
                sender.Text("❌ Указано неверное количество опыта", msg.ChatId);
                return;
            }

            if (!api.Users.CheckUser(userId))
            {
                sender.Text("❌ Пользователя с таким  ID нет в базе данных!", msg.ChatId);
                return;
            }


            api.Users.AddScore(userId, countScore);
            sender.Text("✔ Опыт пользователя увеличен.", msg.ChatId);
        }
コード例 #31
0
ファイル: Program.cs プロジェクト: truecooler/VkBotFramework
        static void Main(string[] args)
        {
            ILoggerFactory  loggerFactory = new LoggerFactory().AddConsole();
            ILogger <VkBot> logger        = loggerFactory.CreateLogger <VkBot>();

            ExampleSettings settings = ExampleSettings.TryToLoad(logger);

            VkBot bot = new VkBot(settings.AccessToken, settings.GroupUrl, logger);

            bot.TemplateManager.Register(new RegexToActionTemplate("привет", "на привет всегда отвечаю кусь"));

            bot.TemplateManager.Register(
                new RegexToActionTemplate("ты кто",
                                          new List <string>()
            {
                "меня зовут мишутка", "вы о ком", "не говори так", "а ты кто?"
            }));

            bot.TemplateManager.Register(
                new RegexToActionTemplate("^[0-9]+$", "ого, я определил, что вы прислали мне число!"));

            bot.TemplateManager.Register(new RegexToActionTemplate("колобок",
                                                                   (sender, eventArgs) =>
            {
                logger.LogInformation(
                    $"кто-то написал {eventArgs.Message.Text}, я могу регировать на эту фразу так, как я хочу! system(\"reboot\")");
            }));

            bot.TemplateManager.Register(new RegexToActionTemplate("квадр.*[0-9]+", (sender, eventArgs) =>
            {
                logger.LogInformation(
                    $"кто-то написал '{eventArgs.Message.Text}', пора вычислить квадрат числа в сообщении!");

                int num = int.Parse(Regex.Match(eventArgs.Message.Text, "[0-9]+").Value);

                sender.Api.Messages.Send(new MessagesSendParams()
                {
                    RandomId = Environment.TickCount,
                    PeerId   = eventArgs.Message.PeerId,
                    Message  = $"квадрат числа {num} равен {num * num}"
                });
            }));


            var keyboard = new KeyboardBuilder().SetOneTime()
                           .AddButton("лол", "кек", KeyboardButtonColor.Positive, "type").Build();

            bot.TemplateManager.Register(new RegexToActionTemplate("кнопка", "лови кнопку", keyboard));
            bot.Start();
            bot.Dispose();
            Console.ReadLine();
        }