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() }); }
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 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); }
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); }
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); }
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); }