如何通过单击 InlineKeyboardButton 打开 ReplyKeyboardMarkup?

How to open ReplyKeyboardMarkup by clicking InlineKeyboardButton?

我需要使用 library 单击 InlineKeyboardButton 打开 ReplyKeyboardMarkup

在我的例子中,点击 Create post 按钮

并打开这种类型的键盘

所以,我尝试单击 InlineKeyboardButton 并使用 CallbackQuery 打开 ReplyKeyboardMarkup(处理单击),就像 snippet.

当我点击我的按钮时,我只看到屏幕上的时钟(但我有 CallbackQuery 来处理这个按钮):

   else if (call_data.equals("correcting_post")) {
                ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
                List<KeyboardRow> keyboard = new ArrayList<>();
                KeyboardRow row = new KeyboardRow();
                row.add("Clear");
                row.add("Preview");
                keyboard.add(row);
                row = new KeyboardRow();
                row.add("Cancel");
                row.add("Next");
                keyboard.add(row);
                keyboardMarkup.setKeyboard(keyboard);
                AnswerCallbackQuery a = new AnswerCallbackQuery()
                        .setCallbackQueryId(update.getCallbackQuery().getId());
                try {
                    execute(a);
                } catch (TelegramApiException e) {
                    e.printStackTrace();
                }
            }

我需要更正或补充什么?感谢您的帮助。

如果我没看错,您想单击 InlineKeyboardButton 按钮之一,然后打开 ReplyKeyboardMarkup。为此,您可以使用如下代码:

public class YourClass extends TelegramLongPollingBot {

    @Override
    public void onUpdateReceived(Update update) {
        if (update.hasCallbackQuery()) {
            String data = update.getCallbackQuery().getData();
            if (data.equals("correcting_post")) {
                try {
                    ReplyKeyboardMarkup keyboardMarkup = new ReplyKeyboardMarkup();
                    List<KeyboardRow> keyboard = new ArrayList<>();
                    KeyboardRow row = new KeyboardRow();
                    row.add("Test button");
                    keyboard.add(row);
                    keyboardMarkup.setKeyboard(keyboard);

                    // Create a message object
                    SendMessage message = new SendMessage()
                            .setChatId(update.getCallbackQuery().getMessage().getChatId())
                            .enableMarkdown(true)
                            .setText("Message text");
                    message.setReplyMarkup(keyboardMarkup);
                    execute(message);
                } catch (TelegramApiException e) {
                    //exception handling
                }
            }
            //Check another options for data
        }
    }

    ...
}

可能这个库提供了一种更方便的方法,但至少这种代码的和平有效。