okeyndell
@okeyndell

Как проверить нажатие кнопки в JAVA Longpoll API (yvasiliev)?

Приветствую, возник вопрос.
При использовании Java VK Bots Long Poll API от yvasiliev, не могу понять как обработать нажатие inline кнопки. При попытке, выбрасывает ошибку и закрывается.
Код приложить не могу, разве что свою реализацию кнопок.
public class Bot extends LongPollBot {

    private final String token;

    public Bot(String token) {
        this.token = token;
    }

    @SneakyThrows
    @Override
    public void onMessageNew(MessageNew messageNew) {
        Message message = messageNew.getMessage();
        if (!message.hasText()) return;
        if (!message.getText().startsWith(Constants.PREFIX)) return;
        if (!Utils.contains(message.getFromId(), Constants.adminList)) return;
        String[] cmd =  message.getText().replaceAll("!", "").split(" ");
        if (cmd.length < 3) {
            vk.messages.send()
                    .setPeerId(message.getPeerId())
                    .setMessage("Вы не указали важные параметры! \n Использование: !send {server} команда")
                    .execute();
            return;
        }

        Send.Response response = vk.messages.send()
                .setPeerId(message.getPeerId())
                .setKeyboard(getKeyboard())
                .execute();

    }

    @Override
    public String getAccessToken() {
        return token;
    }

    @SneakyThrows
    private Keyboard getKeyboard() {
        // button 1
        AtomicReference<JsonObject> payload = new AtomicReference<>(new JsonObject());
        payload.get().addProperty("order", "send");
        payload.get().addProperty("quantity", 2);
        Button sendBTN = new TextButton(Button.Color.POSITIVE, new TextButton.Action(
                "Отправить",
                payload.get()
        ));
        
        // button 2
        payload.set(new JsonObject());
        payload.get().addProperty("order", "cancel");
        Button cancelBTN = new TextButton(Button.Color.NEGATIVE, new TextButton.Action("Отменить", payload.get()));

        var row1 = Collections.singletonList(sendBTN);
        var row2 = Collections.singletonList(cancelBTN);

        return new Keyboard(Collections.unmodifiableList(Arrays.asList(row1, row2))).setInline(true);
    }

    @SneakyThrows
    public static void main(String[] args) {
        Constants.adminList.addAll(Arrays.asList("713491127", "428819897"));
        Constants.serverList.put("default", "127.0.0.1:25565");
        Constants.serverList.put("auth", "127.0.0.1:27756");

        new Bot(Constants.TOKEN).startPolling();
    }
}


Спасибо за помощь!
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы