Как изменить 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);
→ Ссылка