@TipTheBesT

Как удалить ранее переданный кнопки TelegramBot?

Бот в ответ отправляет кнопки пользователю, он нажимает и направляет сообщение боту, тот в свою очередь отвечает, но уже не отправляет кнопки, но на стороне пользователя кнопки остаются висеть, хотя вопрос уже совсем другой. Как это пофиксить?

replyKeyboardMarkup.setOneTimeKeyboard(true); стоит.
Null отправлять вместо клавиатуры пробовал.

Есть следующий код для отправки сообщения с кнопками:
public synchronized void sendMsg(String chatId,String text, ReplyKeyboardMarkup replyKeyboardMarkup) {
        SendMessage message = new SendMessage();
        message.setChatId(chatId);
        message.setText(text);
        message.setReplyMarkup(replyKeyboardMarkup);
 
        try {
            execute(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }


Код формирование кнопок:
public ReplyKeyboardMarkup getButtonsRealtor() {
 
        ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
        replyKeyboardMarkup.setSelective(true);
        replyKeyboardMarkup.setResizeKeyboard(true);
        replyKeyboardMarkup.setOneTimeKeyboard(true);
 
        List<KeyboardRow> keyboard = new ArrayList<>();
        KeyboardRow keyboardFirstRow = new KeyboardRow();
        keyboardFirstRow.add(new KeyboardButton("57"));
        keyboardFirstRow.add(new KeyboardButton("60"));
        keyboardFirstRow.add(new KeyboardButton("63"));
 
        keyboard.add(keyboardFirstRow);
 
        replyKeyboardMarkup.setKeyboard(keyboard);
 
        return replyKeyboardMarkup;
    }


Код для отправки сообщения без кнопок:
public synchronized void sendMsg(String chatId,String text) {
        SendMessage message = new SendMessage();
        message.setChatId(chatId);
        message.setText(text);
        
        try {
            execute(message);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
  • Вопрос задан
  • 795 просмотров
Пригласить эксперта
Ответы на вопрос 1
@YesINeedADoctor
Для удаления сообщения необходимо запомнить его id - messageId + chatId, куда сообщение было отправлено.

Можешь попробовать что-то такое:
public void DeleteMessage(long chatId, int messageId) throws TelegramApiException {
        try {
            DeleteMessage deleteMessage = new DeleteMessage();
            deleteMessage.setChatId(chatId);
            deleteMessage.setMessageId(messageId);
            bot.execute(deleteMessage);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }

Ну а в какой момент это делать - когда принимаешь в определенный момент callbackQuery
Ответ написан
Ваш ответ на вопрос

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

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