コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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
                    },
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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));
        }
コード例 #9
0
        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();
        }
コード例 #10
0
ファイル: PhotoTest.cs プロジェクト: saiedkia/BaleBotApi
        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);
        }
コード例 #11
0
ファイル: ContactTest.cs プロジェクト: saiedkia/GapBotApi
        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);
        }
コード例 #12
0
ファイル: ContactTest.cs プロジェクト: saiedkia/GapBotApi
        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);
        }
コード例 #13
0
 public ReplyKeyboardBuilder()
 {
     keyboard = new ReplyKeyboard();
     rowItems = new List <ReplyKeyboardItem>();
 }