如何在Telegram Bot API中隐藏用户点击后的ReplyKeyboardMarkup

How to hide ReplyKeyboardMarkup after user click in Telegram Bot API

本文关键字:用户 ReplyKeyboardMarkup 隐藏 Telegram Bot API      更新时间:2023-09-26

我使用的是Node.js电报机器人api。

理念:

  1. 显示带有一个按钮的自定义键盘-"共享我的电话号码"
  2. 当用户单击此按钮时,应发送联系人,并将该按钮从屏幕上删除

这是我现在使用的一个代码:

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

问题:

  • 当用户点击"分享我的电话号码"按钮时,它会分享他的联系人,但即使在那之后,按钮仍然可见
  • 当我不使用request_contact标志时,one_time_keyboard工作正常(使用后隐藏按钮),但即使在这种情况下,它也只是隐藏按钮,所以用户可以单击图标将其带回屏幕,这一点都不好

如果我在这里做错了什么,请告诉我。感谢

找到了。

这里有一个解决方案:

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

hide_keyboard自API 2.3起已更名为remove_keyboard

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

您应该使用editMessageReplyMarkup,并在收到客户端用户的点击后用空字符串('')更新该消息的replyMarkup

更新这适用于内联键盘。