Как скрыть ReplyKeyboardMarkup после нажатия пользователем в Telegram Bot API
Я использую Node.js telegram-bot-api.
идея:
- показать пользовательскую клавиатуру с одной кнопкой - "Поделиться своим номером телефона".
- когда пользователь нажимает на эту кнопку, контакт должен быть отправлен и кнопка должна быть удалена с экрана.
вот код, который я использую прямо сейчас:
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
работает правильно (скрывает кнопку после ее использования), но даже в этом случае он просто скрывает кнопку, поэтому пользователь может щелкнуть значок, чтобы вернуть его на экран, что совсем не хорошо.
Пожалуйста, скажите мне, если я делаю что-то неправильно здесь. Спасибо
3 ответов
нашли его.
вот решение:
bot.sendMessage({
chat_id: message.chat.id,
text: 'Some text...',
reply_markup: JSON.stringify({
hide_keyboard: true
})
});
вы должны использовать editMessageReplyMarkup
и обновите это сообщение replyMarkup
с пустой строкой(''
) после получения щелчка пользователя клиента.
обновление это применимо для встроенной клавиатуры.
hide_keyboard
переименовано в remove_keyboard
С API-интерфейс 2.3.
bot.sendMessage({
chat_id: message.chat.id,
text: 'Some text...',
reply_markup: JSON.stringify({
remove_keyboard: true
})
});