如何在用户点击时更改 InlineKeyboardButton 标签?
How to change InlineKeyboardButton label on user click?
我想在点击后更改由 setText() 方法初始化的 InlineKeyboardButton 对象的标签
例如,通过单击按钮将 "label" 字符串更改为 "label-1"。
这是我的一段代码:
if (update.hasMessage() && update.getMessage().hasText()) {
if (update.getMessage().getText().equals("/start")) {
long chat_id = update.getMessage().getChatId();
message = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
InlineKeyboardButton dk1=new InlineKeyboardButton().setText("labe1").setCallbackData("change_the_label");
InlineKeyboardMarkup markupInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> rowsInline = new ArrayList<>();
List<InlineKeyboardButton> rowInline = new ArrayList<>();
rowInline.add(dk1);
rowsInline.add(rowInline);
markupInline.setKeyboard(rowsInline);
message.setReplyMarkup(markupInline);
try {execute(message); catch (TelegramApiException e) {e.printStackTrace();}}}
我通过添加这段代码解决了这个问题
使用 EditMessageReplyMarkup 对象
编辑现有的内联键盘:
String call_data = update0.getCallbackQuery().getData();
long message_id = update0.getCallbackQuery().getMessage().getMessageId();
long chat_id = update0.getCallbackQuery().getMessage().getChatId();
String inline_message_id = update0.getCallbackQuery().getInlineMessageId();
if (call_data.equals("change_the_label")) {
String answer = "Updated message text";
EditMessageReplyMarkup new_message = new EditMessageReplyMarkup()
.setChatId(chat_id).setMessageId(toIntExact(message_id))
.setInlineMessageId(inline_message_id);
InlineKeyboardButton dk1=new InlineKeyboardButton();
dk1.setText("label1");
dk1.setCallbackData("change_the_label");
InlineKeyboardMarkup markupInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> rowsInline = new ArrayList<>();
List<InlineKeyboardButton> rowInline = new ArrayList<>();
rowInline.add(dk1);
rowsInline.add(rowInline);
markupInline.setKeyboard(rowsInline);
new_message.setReplyMarkup(markupInline);
try {editMessageReplyMarkup(new_message);
} catch (TelegramApiException e) {
e.printStackTrace();
}
我想在点击后更改由 setText() 方法初始化的 InlineKeyboardButton 对象的标签
例如,通过单击按钮将 "label" 字符串更改为 "label-1"。
这是我的一段代码:
if (update.hasMessage() && update.getMessage().hasText()) {
if (update.getMessage().getText().equals("/start")) {
long chat_id = update.getMessage().getChatId();
message = new SendMessage()
.setChatId(chat_id)
.setText("You send /start");
InlineKeyboardButton dk1=new InlineKeyboardButton().setText("labe1").setCallbackData("change_the_label");
InlineKeyboardMarkup markupInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> rowsInline = new ArrayList<>();
List<InlineKeyboardButton> rowInline = new ArrayList<>();
rowInline.add(dk1);
rowsInline.add(rowInline);
markupInline.setKeyboard(rowsInline);
message.setReplyMarkup(markupInline);
try {execute(message); catch (TelegramApiException e) {e.printStackTrace();}}}
我通过添加这段代码解决了这个问题 使用 EditMessageReplyMarkup 对象 编辑现有的内联键盘:
String call_data = update0.getCallbackQuery().getData();
long message_id = update0.getCallbackQuery().getMessage().getMessageId();
long chat_id = update0.getCallbackQuery().getMessage().getChatId();
String inline_message_id = update0.getCallbackQuery().getInlineMessageId();
if (call_data.equals("change_the_label")) {
String answer = "Updated message text";
EditMessageReplyMarkup new_message = new EditMessageReplyMarkup()
.setChatId(chat_id).setMessageId(toIntExact(message_id))
.setInlineMessageId(inline_message_id);
InlineKeyboardButton dk1=new InlineKeyboardButton();
dk1.setText("label1");
dk1.setCallbackData("change_the_label");
InlineKeyboardMarkup markupInline = new InlineKeyboardMarkup();
List<List<InlineKeyboardButton>> rowsInline = new ArrayList<>();
List<InlineKeyboardButton> rowInline = new ArrayList<>();
rowInline.add(dk1);
rowsInline.add(rowInline);
markupInline.setKeyboard(rowsInline);
new_message.setReplyMarkup(markupInline);
try {editMessageReplyMarkup(new_message);
} catch (TelegramApiException e) {
e.printStackTrace();
}