- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在单击后更改由 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();
}
关于java - 如何在用户单击时更改 InlineKeyboardButton 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48967168/
我正在创建电报机器人,但无法创建任何 InlineKeyboardButton 对象。 using System; using System.Collections.Generic; using Sy
我想在单击后更改由 setText() 方法初始化的 InlineKeyboardButton 对象的标签 例如,通过单击按钮将“label”字符串更改为“label-1”。 这是我的一段代码: if
我正在尝试发送 InlineKeyboardHandler每 x 秒。为此,我使用了 updater.job_queue.run_repeating但它的行为很奇怪。 除非我先与机器人进行另一次交互,
如何申请{ parse_mode: 'Markdown' }回复 内联键盘按钮 ? const Telegraf = require("telegraf"); const Extra = requir
我正在使用 pytelegrambotapi 构建一个简单的游戏。根据规则,用户会收到一个定义和四个带有单词作为文本的按钮,其中一个是正确的。然后用户应该按下右侧按钮。然后另一个例程将用户的答案与正确
我想制作一个按钮,用于在 Telegram 聊天的浏览器中打开 URL(外部超链接)。目前,我只开发了可点击的操作按钮。 update.message.reply_text( 'Subscri
我使用 C# 和 telegram.bot并希望创建动态 InlineKeyboardMarkup private static InlineKeyboardMarkup InlinePostsKey
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 2 年前。 Improve t
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 2 年前。 Improve t
我正在使用 node-telegram-bot-api。我会有多个 InlineKeyboardButton并用不同的 CallbackQuery 绑定(bind)它们抛出 answerCallbac
我是一名优秀的程序员,十分优秀!