如何在用户点击 Telegram Bot 后隐藏 ReplyKeyboardMarkup API
How to hide ReplyKeyboardMarkup after user click in Telegram Bot API
我正在使用 Node.js telegram-bot-api.
想法:
- 使用一个按钮显示自定义键盘 - "Share my phone number"。
- 当用户单击此按钮时,应发送联系人并且应从屏幕上删除按钮。
这是我现在正在使用的代码:
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
})
});
问题:
- 当用户点击 "Share my phone number" 按钮时,它会分享他的联系方式,但此后按钮仍然可见。
- 当我不使用
request_contact
标志时,one_time_keyboard
工作正常(在使用后隐藏按钮),但即使在那种情况下它也只是隐藏按钮,因此用户可以单击图标把它带回屏幕,这一点都不好。
如果我在这里做错了什么,请告诉我。谢谢
您应该使用 editMessageReplyMarkup
并在收到客户端用户的点击后用空字符串 (''
) 更新该消息的 replyMarkup
。
更新 这适用于内联键盘。
找到了。
这是一个解决方案:
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
})
});
我正在使用 Node.js telegram-bot-api.
想法:
- 使用一个按钮显示自定义键盘 - "Share my phone number"。
- 当用户单击此按钮时,应发送联系人并且应从屏幕上删除按钮。
这是我现在正在使用的代码:
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
})
});
问题:
- 当用户点击 "Share my phone number" 按钮时,它会分享他的联系方式,但此后按钮仍然可见。
- 当我不使用
request_contact
标志时,one_time_keyboard
工作正常(在使用后隐藏按钮),但即使在那种情况下它也只是隐藏按钮,因此用户可以单击图标把它带回屏幕,这一点都不好。
如果我在这里做错了什么,请告诉我。谢谢
您应该使用 editMessageReplyMarkup
并在收到客户端用户的点击后用空字符串 (''
) 更新该消息的 replyMarkup
。
更新 这适用于内联键盘。
找到了。
这是一个解决方案:
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
})
});