public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
        return api.send(request);
    }
@Test
    public void setMyCommands() {
        BotCommand[] commands = new BotCommand[]{
                new BotCommand("c1", "desc1"),
                new BotCommand("c2", "desc2"),
                new BotCommand("c3", "desc3"),
        };

        SetMyCommands cmds = new SetMyCommands(commands);
        cmds.languageCode("en");
        cmds.scope(new BotCommandScopeAllChatAdministrators());

        BaseResponse response = bot.execute(cmds);
        assertTrue(response.isOk());

        GetMyCommands getCmds = new GetMyCommands();
        getCmds.languageCode("en");
        getCmds.scope(new BotCommandScopeAllChatAdministrators());

        GetMyCommandsResponse commandsResponse = bot.execute(getCmds);
        assertTrue(commandsResponse.isOk());
        assertEquals(commands[0].command(), commandsResponse.commands()[0].command());
        assertEquals(commands[0].description(), commandsResponse.commands()[0].description());
        assertArrayEquals(commandsResponse.commands(), commands);
    }