我有一个带内联键盘的机器人。 机器人有一个带有按钮的文本来订购。按下机器人询问此人的姓名后,有一个按钮取消操作。 如果我输入此人的姓名,我正确地使用新按钮加载新文本,但旧的取消按钮不会被删除并保持可见。 我希望能够在写完文本后删除按钮。
此代码用于插入名称:
String answer = "Insert the Name";
EditMessageText new_message = new EditMessageText()
.setChatId(chat_id)
.setMessageId(message_id)
.setText(answer).setParseMode("HTML");
markupInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> bottoni_totali = new ArrayList<>();
List<InlineKeyboardButton> riga1 = new ArrayList<>();
riga1.add(createButton("annulla", emoji_annulla+" Annulla"));
bottoni_totali.add(riga1);
// Add it to the message
markupInline.setKeyboard(bottoni_totali);
new_message.setReplyMarkup(markupInline);
try {
execute(new_message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
当我插入姓名时,我会显示姓氏,但旧按钮CANCEL可见。
String answer = "Now insert the surname";
sendMessage = new SendMessage().setChatId(update.getMessage().getChatId());
sendMessage.setText(answer).setParseMode("HTML");
markupInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> bottoni_totali = new ArrayList<>();
List<InlineKeyboardButton> riga1 = new ArrayList<>();
riga1.add(createButton("annulla", emoji_annulla+" Annulla"));
bottoni_totali.add(riga1);
// Add it to the message
markupInline.setKeyboard(bottoni_totali);
sendMessage.setReplyMarkup(markupInline);
try {
execute(sendMessage);
} catch (TelegramApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:0)
首先我想谈谈这个链接: How to hide ReplyKeyboardMarkup after user click in Telegram Bot API
上述问题与InlineKeyboardMarkup
有关,链接问题与ReplyKeyboardMarkup
有关。这两个是不同的东西,不要混用它们。
其次,你必须澄清你的问题。
但旧的取消按钮未被删除且仍然可见
你是什么意思? (截图是最好的解释方式)
在第二段代码中,您使用SendMessage
代替EditMessageText
(如第一个代码段中所示)。这意味着包含文字Now insert the surname
的邮件不会替换带有文字Insert the Name
的邮件。 Now insert the surname
将显示为新消息。
似乎你应该在第二种情况下使用EditMessageText
。