Для реализации данной задачи вам необходимо использовать InlineKeyboardMarkup и методы класса SendMessage из библиотеки TelegramBots. Вот пример кода на Java, который реализует данную задачу:
public class MyBot extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
if (update.hasMessage() && update.getMessage().hasText()) {
String messageText = update.getMessage().getText();
long chatId = update.getMessage().getChatId();
if (messageText.equals("/start")) {
// Создаем первую inline клавиатуру
InlineKeyboardMarkup keyboardMarkup = new InlineKeyboardMarkup();
List> keyboard = new ArrayList<>();
List row = new ArrayList<>();
row.add(new InlineKeyboardButton().setText("Кнопка 1").setCallbackData("button1"));
row.add(new InlineKeyboardButton().setText("Кнопка 2").setCallbackData("button2"));
keyboard.add(row);
keyboardMarkup.setKeyboard(keyboard);
SendMessage message = new SendMessage()
.setChatId(chatId)
.setText("Выберите кнопку:")
.setReplyMarkup(keyboardMarkup);
try {
execute(message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
}
} else if (update.hasCallbackQuery()) {
String callbackData = update.getCallbackQuery().getData();
long chatId = update.getCallbackQuery().getMessage().getChatId();
if (callbackData.equals("button1")) {
// Создаем вторую inline клавиатуру
InlineKeyboardMarkup keyboardMarkup = new InlineKeyboardMarkup();
List> keyboard = new ArrayList<>();
List row = new ArrayList<>();
row.add(new InlineKeyboardButton().setText("Кнопка 3").setCallbackData("button3"));
row.add(new InlineKeyboardButton().setText("Кнопка 4").setCallbackData("button4"));
keyboard.add(row);
keyboardMarkup.setKeyboard(keyboard);
EditMessageReplyMarkup editMessageReplyMarkup = new EditMessageReplyMarkup()
.setChatId(chatId)
.setMessageId(update.getCallbackQuery().getMessage().getMessageId())
.setReplyMarkup(keyboardMarkup);
try {
execute(editMessageReplyMarkup);
} catch (TelegramApiException e) {
e.printStackTrace();
}
} else if (callbackData.equals("button2")) {
// Действия при нажатии на кнопку 2
} else if (callbackData.equals("button3")) {
// Действия при нажатии на кнопку 3
} else if (callbackData.equals("button4")) {
// Действия при нажатии на кнопку 4
}
}
}
@Override
public String getBotUsername() {
return "my_bot";
}
@Override
public String getBotToken() {
return "1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZ";
}
}
1) После воода /start в чате должна появиться Inline клавиатура.
2) После нажатия на любую из кнопок Inline клавиатуры она должна замениться на другую inline клавиатуру. Как реализовать подобное? Бьюсь третий день, не могу понять. Очень буду благодарен если поможете!