Как скрыть(свернуть), нажатую кнопку,клавиатура 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()
Но когда я ему написал более подробно, он ответил так: пока не так знаком с питоном, поэтому как это в коде сделать не подскажу.
Я Читал документацию, но не представляю, как прописать этот код.
Так же, в нете, нашел такой ответ,но тоже не представляю, как это все прописать:
Да, вы можете обновить (отредактировать) текущий текст сообщения с помощью выбора, сделанного пользователем, это простая быстрая визуальная обратная связь с пользователем, когда он взаимодействует с вашими встроенными кнопками.
Для этого можно использовать методы 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)
})
}
Подскажите пожалуйста код, я не очень разбираюсь, уже много чего делал, но не получается у меня.