Esempio n. 1
0
        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()
            });
        }
Esempio n. 2
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());
    }
Esempio n. 3
0
        public static IKeyboardBuilder SetAccessKeyboardBuilder(long adminId)
        {
            IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();

            keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Модератор",
                Payload = "{\"command\": \"addModeratorAccess\", \"userId\": \"" + adminId.ToString() + "\"}"
            }, KeyboardButtonColor.Primary);
            keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Администратор",
                Payload = "{\"command\": \"addAdminAccess\", \"userId\": \"" + adminId.ToString() + "\"}"
            }, KeyboardButtonColor.Negative);
            keyboardBuilder.SetInline();
            return(keyboardBuilder);
        }
Esempio n. 4
0
        public static IKeyboardBuilder AcceptOrDeclineAdminKeyboardBuilder(long userId)
        {
            var buttonAccept = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Да",
                Payload = "{\"command\": \"acceptRemoveAdmin\", \"userId\": \"" + userId.ToString() + "\"}"
            };
            var buttonDecline = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Отмена",
                Payload = "{\"command\": \"declineRemoveAdmin\"}"
            };
            IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();

            keyboardBuilder.SetInline();
            keyboardBuilder.AddButton(buttonAccept, KeyboardButtonColor.Positive);
            keyboardBuilder.AddButton(buttonDecline, KeyboardButtonColor.Negative);
            return(keyboardBuilder);
        }
Esempio n. 5
0
        public static IKeyboardBuilder AcceptOrDeclineKeyboardBuilder()
        {
            var buttonAccept = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Да",
                Payload = "{\"command\": \"acceptSend\"}"
            };
            var buttonDecline = new MessageKeyboardButtonAction()
            {
                Type    = KeyboardButtonActionType.Text,
                Label   = "Отмена",
                Payload = "{\"command\": \"declineSend\"}"
            };
            IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();

            keyboardBuilder.SetInline();
            keyboardBuilder.AddButton(buttonAccept, KeyboardButtonColor.Positive);
            keyboardBuilder.AddButton(buttonDecline, KeyboardButtonColor.Negative);
            return(keyboardBuilder);
        }
Esempio n. 6
0
        private static List <IKeyboardBuilder> _TagsKeyboardBuilders(string[] tags, string tagPayload, string nextPagePayload)
        {
            List <IKeyboardBuilder> keyboardBuilders = new List <IKeyboardBuilder>();

            if (tags.Length <= 10)
            {
                IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();
                int countLine = 0;
                //int countButtons = 0;
                for (int j = 0; j < tags.Length; j++)
                {
                    if (countLine >= 4)
                    {
                        keyboardBuilder.AddLine();
                        countLine = 0;
                    }
                    keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
                    {
                        Type    = KeyboardButtonActionType.Text,
                        Payload = tagPayload,
                        Label   = tags[j]
                    });
                    countLine++;
                    //countButtons++;
                }
                keyboardBuilder.SetInline();
                keyboardBuilders.Add(keyboardBuilder);
            }
            else
            {
                int n = 1 + tags.Length / 10;
                IKeyboardBuilder keyboardBuilder = new KeyboardBuilder();
                int countLine    = 0;
                int countButtons = 0;
                int count        = 0;
                foreach (var tag in tags)
                {
                    if (countButtons == 9 && count != tags.Length - 1)
                    {
                        StringBuilder sb = new StringBuilder(nextPagePayload);
                        sb.Append(", \"current\": ");
                        sb.Append($"\"{count / 10 + 1}\",");
                        sb.Append($"\"from\": \"{n}\"");
                        sb.Append("}");
                        //Console.WriteLine(sb.ToString());
                        keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
                        {
                            Type    = KeyboardButtonActionType.Text,
                            Payload = sb.ToString(),
                            Label   = $"{count / 10 + 1}/{n}"
                        }, KeyboardButtonColor.Positive);
                        countButtons = 0;
                        countLine    = 0;
                        keyboardBuilder.SetInline();
                        keyboardBuilders.Add(keyboardBuilder);
                        keyboardBuilder = new KeyboardBuilder();
                        keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
                        {
                            Type    = KeyboardButtonActionType.Text,
                            Payload = tagPayload,
                            Label   = tag
                        });
                    }
                    else
                    {
                        if (countLine >= 4)
                        {
                            countLine = 0;
                            keyboardBuilder.AddLine();
                        }
                        keyboardBuilder.AddButton(new MessageKeyboardButtonAction()
                        {
                            Type    = KeyboardButtonActionType.Text,
                            Payload = tagPayload,
                            Label   = tag
                        });
                        if (count == tags.Length - 1)
                        {
                            keyboardBuilder.SetInline();
                            keyboardBuilders.Add(keyboardBuilder);
                        }
                    }
                    count++;
                    countLine++;
                    countButtons++;
                }
            }
            return(keyboardBuilders);
        }