public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
        return api.send(request);
    }
@Test
    public void answerCallback() {
        // callbackQuery sent by client after pressing on InlineKeyboardButton (used in sendGame() test)
        CallbackQuery callbackQuery = BotUtils.parseUpdate(testCallbackQuery).callbackQuery();

        assertNotNull(callbackQuery);
        assertFalse(callbackQuery.id().isEmpty());
        UserTest.checkUser(callbackQuery.from(), true);
        assertEquals(chatId, callbackQuery.from().id());
        MessageTest.checkMessage(callbackQuery.message());
        assertFalse(callbackQuery.chatInstance().isEmpty());
        assertEquals("pengrad_test_game", callbackQuery.gameShortName());
        assertNull(callbackQuery.inlineMessageId());
        assertNull(callbackQuery.data());

        BaseResponse response = bot.execute(new AnswerCallbackQuery(callbackQuery.id())
                .text("answer callback")
                .url("telegram.me/pengrad_test_bot?game=pengrad_test_game")
                .showAlert(false)
                .cacheTime(1));

        assertFalse(response.isOk());
        assertEquals(400, response.errorCode());
        assertEquals("Bad Request: query is too old and response timeout expired or query ID is invalid", response.description());
    }