How to hide ReplyKeyboardMarkup after user click in Telegram Bot API

扶醉桌前 提交于 2019-12-04 11:16:54

问题


I am using Node.js telegram-bot-api.

Idea:

  1. Show a custom keyboard with one button - "Share my phone number".
  2. When user clicks this button, contact should be sent and button should be removed from screen.

Here is a code I am using right now:

bot.sendMessage({
    text: 'Please give us your phone number',
    reply_markup: JSON.stringify({
        keyboard: [
            [{
                text: 'Share my phone number',
                request_contact: true
            }]
        ],
        resize_keyboard: true,
        one_time_keyboard: true
    })
});

Problems:

  • When user clicks "Share my phone number" button, it shares his contact but button is visible even after that.
  • When I am not using request_contact flag, one_time_keyboard works correctly (hides the button after its usage), but even in that case it just hides the button, so user can click an icon to bring it back to screen, which is not good at all.

Please tell me if I am doing something wrong here. Thanks


回答1:


Found it.

Here is a solution:

bot.sendMessage({
    chat_id: message.chat.id,
    text: 'Some text...',
    reply_markup: JSON.stringify({
        hide_keyboard: true
    })
});



回答2:


hide_keyboard has been renamed to remove_keyboard since API 2.3.

bot.sendMessage({
    chat_id: message.chat.id,
    text: 'Some text...',
    reply_markup: JSON.stringify({
        remove_keyboard: true
    })
});



回答3:


You should use editMessageReplyMarkup and update that message's replyMarkup with null string('') after client user's click recieved.

UPDATE this is applicable for inline keyboards.



来源:https://stackoverflow.com/questions/38696771/how-to-hide-replykeyboardmarkup-after-user-click-in-telegram-bot-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!