public <T extends BaseRequest<T, R>, R extends BaseResponse> R execute(BaseRequest<T, R> request) {
        return api.send(request);
    }
@Test
    public void sendDice() {
        SendResponse response = bot.execute(new SendDice(chatId));
        Dice dice = response.message().dice();
        assertNotNull(dice);
        assertTrue(dice.value() >= 1 && dice.value() <= 6);
        assertEquals("🎲", dice.emoji());

        response = bot.execute(new SendDice(chatId).darts());
        dice = response.message().dice();
        assertNotNull(dice);
        assertTrue(dice.value() >= 1 && dice.value() <= 6);
        assertEquals("🎯", dice.emoji());

        response = bot.execute(new SendDice(chatId).basketball());
        dice = response.message().dice();
        assertNotNull(dice);
        assertTrue(dice.value() >= 1 && dice.value() <= 5);
        assertEquals("🏀", dice.emoji());

        response = bot.execute(new SendDice(chatId).football());
        dice = response.message().dice();
        assertNotNull(dice);
        assertTrue(dice.value() >= 1 && dice.value() <= 5);
        assertEquals("⚽", dice.emoji());

        response = bot.execute(new SendDice(chatId).slotMachine());
        dice = response.message().dice();
        assertNotNull(dice);
        assertTrue(dice.value() >= 1 && dice.value() <= 64);
        assertEquals("🎰", dice.emoji());

        response = bot.execute(new SendDice(chatId).bowling());
        dice = response.message().dice();
        assertNotNull(dice);
        assertTrue(dice.value() >= 1 && dice.value() <= 6);
        assertEquals("🎳", dice.emoji());
    }