public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
        return api.send(request);
    }
@Test
    public void sendPollWithKeyboard() {
        String question = "Question ?";
        String[] answers = {"Answer 1", "Answer 2"};
        long closeDate = System.currentTimeMillis() / 1000 + 500;
        SendResponse sendResponse = bot.execute(
                new SendPoll(chatId, question, answers)
                        .type("regular")
                        .allowsMultipleAnswers(true)
                        .replyMarkup(new ReplyKeyboardMarkup(
                                new KeyboardButton("all polls").requestPoll(new KeyboardButtonPollType()),
                                new KeyboardButton("quiz").requestPoll(new KeyboardButtonPollType(Poll.Type.quiz)),
                                new KeyboardButton("regular").requestPoll(new KeyboardButtonPollType("regular"))))
                        .closeDate(closeDate)
        );
        Poll poll = sendResponse.message().poll();
        assertEquals(question, poll.question());
        assertEquals(answers.length, poll.options().length);
        assertTrue(poll.isAnonymous());
        assertEquals(poll.totalVoterCount(), Integer.valueOf(0));
        assertEquals(poll.type(), Poll.Type.regular);
        assertTrue(poll.allowsMultipleAnswers());
        assertEquals(closeDate, poll.closeDate().longValue());
    }