Пытаюсь реализовать редактирование сообщений в боте. Заменить сообщение на текст получается без проблем:
String text = "Текст, заменяющий собой прежнее собощение";
EditMessageText message = new EditMessageText();
message.setChatId(String.valueOf(chatId));
message.setText(text);
message.setMessageId((int) messageId);
Но как быть, если требуется так же сменить кнопки в InlineKeyboard?
По логике у меня реализация такая - пользователь нажимает кнопку, вызывается метод с иным набором кнопок и текстом.
Например нажимает на одну кнопку и вызывается иной метод, который выводит новый набор кнопок на клавиатуру:
private void notifay_set_year(long chatId, String text){
SendMessage message = new SendMessage();
message.setChatId(String.valueOf(chatId));
message.setText(text);
InlineKeyboardMarkup markupInputInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> rowsInline = new ArrayList<>();
List<InlineKeyboardButton> rowInline1 = new ArrayList<>();
List<InlineKeyboardButton> rowInline2 = new ArrayList<>();
var Button_23 = new InlineKeyboardButton();
Button_23.setText("2023");
Button_23.setCallbackData(YEAR_23);
var Button_24 = new InlineKeyboardButton();
Button_24.setText("2024");
Button_24.setCallbackData(YEAR_24);
var Button_25 = new InlineKeyboardButton();
Button_25.setText("2025");
Button_25.setCallbackData(YEAR_25);
var Button_no = new InlineKeyboardButton();
Button_no.setText("Отмена");
Button_no.setCallbackData(NO_NOTIFAY);
rowInline1.add(Button_no);
rowInline2.add(Button_23);
rowInline2.add(Button_24);
rowInline2.add(Button_25);
rowsInline.add(rowInline1);
rowsInline.add(rowInline2);
markupInputInline.setKeyboard(rowsInline);
message.setReplyMarkup(markupInputInline);
try {
execute(message);
}
catch (TelegramApiException e){
}
}
Так вот как сделать, что бы новые кнопки, при вызове другого метода появлялись не новым сообщением, а заменялись в уже имеющемся?