Как скрыть ReplyKeyboardMarkup после нажатия пользователем в Telegram Bot API

Я использую Node.js telegram-bot-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 работает правильно (скрывает кнопку после ее использования), но даже в этом случае он просто скрывает кнопку, поэтому пользователь может щелкнуть значок, чтобы вернуть его на экран, что совсем не хорошо.

Пожалуйста, скажите мне, если я делаю что-то неправильно здесь. Спасибо

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