Убрать keyboard после клика telegram bot

816
19 августа 2017, 03:07

Бот создает клавиатуру в ответе:

$keyboard = [
    "keyboard" => [[
        [
            "text" => "contact"
        ],
        [
            "text" => "location" 
        ]
    ]],
    "one_time_keyboard" => true //параметр должен убирать клавиатуру
                                //после клика на одну из кнопок
];

но после нажатия на одну из кнопок, символ клавиатуры остается возле поля ввода:

Как ее все-таки убрать? Пока пользуюсь способом отправки нового сообщения с

$keyboard = [
    'remove_keyboard' => true
];

но это не удобно для пользователя.

Answer 1

Истинное значение поля one_time_keyboard объекта ReplyKeyboardMarkup всего лишь инструктирует программу-клиент скрыть клавиатуру, но она всё равно будет доступна по нажатию на специальную кнопку.

Если в ответ на нажатие кнопки бот отправляет пользователю сообщение, можно убрать клавиатуру. Для этого в при вызове sendMessage нужно дополнительно в параметре reply_markup передать объект ReplyKeyboardRemove.

А метод editMessageReplyMarkup предназначен для редактирования полупрозрачных inline-клавиатур, которые прикрепляются к сообщению. Этот тип клавиатур был введён в апреле прошлого года.

READ ALSO
Вырезать последний тег и его содержимое

Вырезать последний тег и его содержимое

ЗдравствуйтеЕсть текст, в котором следующие содержание:

317
Кто должен отдать данные в шаблон?

Кто должен отдать данные в шаблон?

Есть такой код в роутере:

290
Как организовать запрос ElasticSearch?

Как организовать запрос ElasticSearch?

Вот проиндексированые атрибуты

326
Как правильно делить приложение?

Как правильно делить приложение?

Хочу делать всё правильно, потому интересуюсьЕсть контроллер SiteController с actionRegistration, который отображает страницу регистрации

323