Как скрыть(свернуть), нажатую кнопку,клавиатура InlineKeyboardMarkup?

Подскажите, как свернуть(закрыть) нажатую кнопку, чтобы другие пользователи группы телеграм, не видели раскрытую кнопку, а видели меню, но с не нажатыми кнопками, другим пользователем.

Библиотека Aiogram, Телеграм группа, у бота все права есть.

markup = types.InlineKeyboardMarkup(row_width=2).add(InlineKeyboardButton(text='Удалить клавиатуру', callback_data='test'))
item1 = types.InlineKeyboardButton(" Правила", callback_data='pravila')
item2 = types.InlineKeyboardButton(" Помощь", callback_data='pomoshh')
markup.add(item1, item2)

@dp.callback_query_handler(text="pravila")
async def pravila_call(callback: types.CallbackQuery):
    #markup = types.ReplyKeyboardMarkup(one_time_keyboard=True)
    #markup = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True, one_time_keyboard=True)
    await callback.message.answer("Тут мой текс", parse_mode='html',reply_markup=btn_send_markup)
    #await message.reply('Cancelled.', reply_markup=types.ReplyKeyboardRemove())
    await callback.answer()
Мне один пользователь, ответил так: Как вариант запоминаете сообщение которое с клавиатурой и его id, через 2 минуты редактируете через editMessageText, там указываете id, текст сообщения, но не указываете клавиатуру, она уберется.

Но когда я ему написал более подробно, он ответил так: пока не так знаком с питоном, поэтому как это в коде сделать не подскажу.

Я Читал документацию, но не представляю, как прописать этот код.

Так же, в нете, нашел такой ответ,но тоже не представляю, как это все прописать:

Да, вы можете обновить (отредактировать) текущий текст сообщения с помощью выбора, сделанного пользователем, это простая быстрая визуальная обратная связь с пользователем, когда он взаимодействует с вашими встроенными кнопками.

Для этого можно использовать методы editXXX .

см. https://core.telegram.org/боты/api#обновление-сообщения

editMessageText - изменяет текст сообщения перед панелью inlinekeyboard

editMessageReplyMarkup - изменения в новой линейной панели

Вы можете отправить editMessageReplyMarkup без reply_markup парамента.

Как я знаю, нет способа удалить клавиатуру без отправки сообщений, но вы можете отправить простое сообщение с помощью ReplyKeyboardRemove и немедленно удалить сообщение с помощью deleteMessage.

Просто отредактируйте отправленное сообщение, не предоставляя reply_markup.
Так же, нашел такой ответ пользователя, но это для другой библиотеки.

Для этого могут быть разные решения, мое предложение:

вы можете использовать самый первый ответ каждого пользователя, чтобы удалить клавиатуру, сначала используйте editMessageText, чтобы удалить клавиатуру, а затем отправьте ему соответствующий ответ.(обратите внимание, что chatIDs, что вы удалили их клавиатуру, поэтому вы сделаете это для каждого пользователя только один раз)

bot.on('callback_query', function onCallbackQuery(callbackQuery) {
    if(!didWeRemoveHisKeyboard(callbackQuery.from.id))
        removeHisKeyboard(callbackQuery)
    //then handle the user response
})

removeHisKeyboard = function(callbackQuery){
    bot.editMessageText(callbackQuery.message.text,
    {message_id:callbackQuery.message.message_id , chat_id:callbackQuery.from.id,
    reply_markup: {
        remove_keyboard: true
    }}).catch((err) => {
        //some error handling
    }).then(function(res){
         if(res)
             addThisChatToHandledList(callbackQuery.from.id)
    })

}

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


Ответы (0 шт):