Я считаю, что в вашем коде есть 2 проблемы.
Первый .В вашей функции help
вы пытаетесь изменить как текст сообщения, так и разметку его.Но метод edit_message_reply_markup
только изменяет разметку .Поэтому вместо
update.callback_query.edit_message_reply_markup(
'Help ... help..',
reply_markup=InlineKeyboardMarkup(keyboard)
)
Сделайте следующее:
bot.edit_message_text(
text='Help ... help..',
chat_id=update.callback_query.message.chat_id,
message_id=update.callback_query.message.message_id,
reply_markup=InlineKeyboardMarkup(keyboard)
)
bot.answer_callback_query(update.callback_query.id, text='')
Обратите внимание на изменения:
- Я заменил
update.callback_query
на bot
. - ВАЖНО : я заменил
edit_message_reply_markup
на edit_message_text
;Потому что первый только изменяет разметку , а второй может делать и то и другое. - Я добавил
chat_id
и message_id
аргументы;Потому что это то, что говорится в документах . - ВАЖНО : я добавил новый метод (
bot.answer_callback_query
);Потому что каждый раз, когда вы обрабатываете обратный вызов , вам нужно ответить (используя этот метод).Однако вы можете оставить аргумент text
пустым , чтобы он ничего не показывал.
Second .Поправьте меня, если я ошибаюсь, но я верю, что когда пользователь нажимает кнопку cancel
, вы хотите, чтобы текст сообщения был изменен на "Пока".и уберите клавиатуру .Если это так, то, что вы делаете неправильно, вы отправляете новое сообщение (reply_text
) при попытке удалить клавиатуру (reply_markup=ReplyKeyboardRemove()
).Вы можете просто сделать это следующим образом:
bot.edit_message_text(
text='Bye',
chat_id=update.callback_query.message.chat_id,
message_id=update.callback_query.message.message_id,
)
bot.answer_callback_query(update.callback_query.id, text='')
Здесь идея заключается в том, что когда вы редактируете текст сообщения и не используете клавиатуру разметки, предыдущая клавиатура автоматически удаляется , поэтому вам не нужно использовать ReplyKeyboardRemove()
.
Вот GIF (с жестким G), который работает!