public void Should_send_successfully_and_had_four_button_in_two_row() { GapClient gapClient = new GapClient(Token); ReplyKeyboard keyboard = new ReplyKeyboard(); keyboard.AddRow(new List <ReplyKeyboardItem>() { new ReplyKeyboardItem("item1", "value one"), new ReplyKeyboardItem("item2", "value two"), }); keyboard.AddRow(new List <ReplyKeyboardItem>() { new ReplyKeyboardLocationItem("location"), new ReplyKeyboardContactItem("contact") }); Message message = new Message { ChatId = ChatId, Data = "salam iran", ReplyKeyboard = keyboard }; PostResult result = gapClient.Send(message).Result; result.StatusCode.Should().Be(StatusCode.Success); }
public async Task <IEnumerable <long> > SendMessage(long chatId, OutMessage message) { var result = new List <long>(message.Attachments.Count + 1); GroupAttachments(message.Attachments, out var photos, out var videos, out var others); var photoMediaGroup = photos.Select(TgConverter.ToTgPhoto); var videoMediaGroup = videos.Select(TgConverter.ToTgVideo); if (photos.Count > 0) { result.AddRange((await _api.SendMediaGroupAsync(photoMediaGroup, chatId).ConfigureAwait(false)) .Select(a => (long)a.MessageId)); } if (videos.Count > 0) { result.AddRange((await _api.SendMediaGroupAsync(videoMediaGroup, chatId).ConfigureAwait(false)) .Select(a => (long)a.MessageId)); } foreach (var attachment in others) { switch (attachment.Type) { case AttachmentType.Audio: var sentAudio = await _api.SendAudioAsync(chatId, TgConverter.ToTgMedia(attachment)) .ConfigureAwait(false); result.Add(sentAudio.MessageId); break; case AttachmentType.Voice: var sentVoice = await _api.SendVoiceAsync(chatId, TgConverter.ToTgMedia(attachment)) .ConfigureAwait(false); result.Add(sentVoice.MessageId); break; default: var sendDocument = await _api.SendDocumentAsync(chatId, TgConverter.ToTgMedia(attachment)) .ConfigureAwait(false); result.Add(sendDocument.MessageId); break; } } var keyboard = message.Keyboard switch { InlineKeyboard inlineKeyboard => TgConverter.ToTgKeyboard(inlineKeyboard), ReplyKeyboard replyKeyboard => TgConverter.ToTgKeyboard(replyKeyboard), _ => message.RemoveReplyKeyboard ? new ReplyKeyboardRemove() : null }; var sentMessage = await _api.SendTextMessageAsync(chatId, message.Text, replyMarkup : keyboard) .ConfigureAwait(false); result.Add(sentMessage.MessageId); return(result); }
public async Task <IEnumerable <long> > SendMessage(long chatId, OutMessage message) { var attachments = new List <MediaAttachment>(message.Attachments.Count); foreach (var attachment in message.Attachments) { MediaAttachment vkAttachment = attachment.Type switch { AttachmentType.Audio => await UploadAudio(chatId, attachment).ConfigureAwait(false), AttachmentType.Voice => await UploadAudio(chatId, attachment).ConfigureAwait(false), AttachmentType.Photo => await UploadPhoto(chatId, attachment).ConfigureAwait(false), _ => await UploadDocument(chatId, attachment).ConfigureAwait(false) }; attachments.Add(vkAttachment); } var result = new List <long> { await _api.Messages.SendAsync(new MessagesSendParams { PeerId = chatId, RandomId = DateTime.Now.Millisecond, Message = message.Text, Keyboard = message.Keyboard switch { InlineKeyboard inlineKeyboard => VkConverter.ToVkKeyboard(inlineKeyboard), ReplyKeyboard replyKeyboard => VkConverter.ToVkKeyboard(replyKeyboard), _ => message.RemoveReplyKeyboard ? new MessageKeyboard { Buttons = new IEnumerable <MessageKeyboardButton> [0] } : null },
private static async Task <IKeyboard> WatchesKeyboard(int metricId) { var watches = await DataService.Watches.WatchesByMetric(metricId); IEnumerable <string> keys = watches.Select(s => s.KeyItem).Append(ANADIR_WATCH).Append(REGRESAR); return(ReplyKeyboard.FromStringKeysVertical(keys)); }
private static async Task <IKeyboard> MetricsKeyboard(int deviceId) { var metrics = await DataService.Metrics.MetricsByDevice(deviceId); IEnumerable <string> keys = metrics.Select(s => s.KeyItem).Append(ANADIR_METRICA).Append(REGRESAR); return(ReplyKeyboard.FromStringKeysVertical(keys)); }
private static async Task <IKeyboard> ControlsKeyboard(int deviceId) { var controls = await DataService.Controls.ControlsByDevice(deviceId); IEnumerable <string> keys = controls.Select(s => s.KeyItem).Append(ANADIR_CONTROL).Append(REGRESAR); return(ReplyKeyboard.FromStringKeysVertical(keys)); }
private static async Task <IKeyboard> GenerateKeyboard <T>(int input, Func <int, Task <IEnumerable <T> > > func, Func <T, string> stringFromT, string append) { var devices = await func(input); var keys = devices.Select(s => stringFromT(s)).Append(append); return(ReplyKeyboard.FromStringKeysVertical(keys)); }
private static async Task <IKeyboard> DevicesKeyboard(int userId) //=> await GenerateKeyboard(userId, DataService.Devices.DevicesByUser, s => $"{s.DeviceId} {s.Name}", ANADIR_DISPOSITIVO); { var devices = await DataService.Devices.DevicesByUser(userId); IEnumerable <string> keys = devices.Select(s => s.KeyItem).Append(ANADIR_DISPOSITIVO).Append(REGRESAR); return(ReplyKeyboard.FromStringKeysVertical(keys)); }
public void Send_a_textMessage_with_inlineKeyboard_via_keboard_builder() { BaleClient client = new BaleClient(Token); Response response = client.SendTextMessage(new TextMessage() { ChatId = ChatId, Text = "click on buttons", ReplyMarkup = ReplyKeyboard.Create().AddButton("button one").AddButton("button two") .AddButton("button three").Build() }); response.Ok.Should().BeTrue(); response.Result.Should().NotBeNull(); }
public void Send_photo_with_keyboard_successfully() { BaleClient client = new BaleClient(Token); Response response = client.SendPhoto(new PhotoMessage() { Caption = "image caption", ChatId = ChatId, Photo = Utils.ToBytes(FilePath + "lolo.png"), ReplyMarkup = ReplyKeyboard.Create().AddButton("download file").AddButton("something else").Build() }); response.Ok.Should().BeTrue(); response.Result.Photo.Count.Should().Be(1); }
public void Should_send_2X2_reply_keyboard() { GapClient gapClient = new GapClient(Token); Message message = new Message() { ChatId = ChatId, ReplyKeyboard = ReplyKeyboard.Builder().AddGetContact("share phone").Add("button two").AddRow().AddRow().AddGetLocation("share location").Add("button four").Build(), Data = "send to me your phone or location" }; PostResult postResult = gapClient.Send(message).Result; postResult.StatusCode.Should().Be(StatusCode.Success); }
public void Should_send_an_get_contact_inline_button() { GapClient gapClient = new GapClient(Token); Message message = new Message() { ChatId = ChatId, ReplyKeyboard = ReplyKeyboard.Builder().AddGetContact("share phone").Build(), Data = "let me khnow your phone number..." }; PostResult postResult = gapClient.Send(message).Result; postResult.StatusCode.Should().Be(StatusCode.Success); }
public ReplyKeyboardBuilder() { keyboard = new ReplyKeyboard(); rowItems = new List <ReplyKeyboardItem>(); }