Как изменить Markup клавиатуру в сообщении?
Есть телеграм бот, который отправляет сообщение с картинкой, текстом и кнопками.
return ctx.replyWithPhoto(photo_url, {
caption: text,
parse_mode: "HTML",
reply_markup: Markup.inlineKeyboard([
[Markup.button.callback(text_butt1, 'clickbtn1')],
[Markup.button.callback(text_butt2, 'clickbtn2')],
]).reply_markup,
}).catch((err) => err);
При нажатии на кнопку, мне нужно изменить кнопки, а текст и картинку оставить.
return ctx.editMessageReplyMarkup({
reply_markup: Markup.inlineKeyboard([
[Markup.button.callback(locale.start_menu.buttons.links, 'none')],
[Markup.button.callback(locale.start_menu.buttons.my_profile, 'none')]
]).reply_markup,
}).catch((err) => err);
Такой код работает, но вместо замены, просто удаляет клавиатуру.
return ctx.editMessageCaption(ctx.update.callback_query.message.caption ,{
parse_mode: "HTML",
reply_markup: Markup.inlineKeyboard([
[Markup.button.callback(locale.start_menu.buttons.links, 'none')],
[Markup.button.callback(locale.start_menu.buttons.my_profile, 'none')]
]).reply_markup,
}).catch((err) => err);
Такой код тоже работает, но мой видоизмененный текст с курсивом и подчеркиванием превращается в обычный.
Ответы (1 шт):
Автор решения: Yyyyyyees
→ Ссылка
Чтобы изменить только клавиатуру, нужно использовать editMessageReplyMarkup
В вопросе неправильная запись кода
return ctx.editMessageReplyMarkup({
reply_markup: Markup.inlineKeyboard([
[Markup.button.callback(locale.start_menu.buttons.links, 'none')],
[Markup.button.callback(locale.start_menu.buttons.my_profile, 'none')]
]).reply_markup,
}).catch((err) => err);
Правильно будет, вот так:
return ctx.editMessageReplyMarkup(
Markup.inlineKeyboard([
[Markup.button.callback(locale.start_menu.buttons.links, 'none')],
[Markup.button.callback(locale.start_menu.buttons.my_profile, 'none')]
]).reply_markup).catch((err) => err);