电报BOT JAVA

时间:2018-02-12 11:22:45

标签: java telegram-bot

我有一个带内联键盘的机器人。 机器人有一个带有按钮的文本来订购。按下机器人询问此人的姓名后,有一个按钮取消操作。 如果我输入此人的姓名,我正确地使用新按钮加载新文本,但旧的取消按钮不会被删除并保持可见。 我希望能够在写完文本后删除按钮。

此代码用于插入名称:

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();
                }

1 个答案:

答案 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