Задать вопрос
@pavelermolenko

Как сделать так, чтобы inline-кнопка не исчезала?

Написал простенького бота для тг, решил поменять команды на кнопки. Кнопка появляется под сообщением и функцию вызывает, но после нажатия сразу исчезает. Как сделать так, чтобы кнопка оставалась под сообщением, которое она редактирует и продолжала нажиматься?
mykb = InlineKeyboardMarkup(row_width=1)
mybt = InlineKeyboardButton(text="Обновить курс", callback_data="refresh")
mykb.add(mybt)

@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
    await message.reply(get_value(), reply_markup=mykb)


@dp.callback_query_handler(text="refresh")
async def send_welcome(query: types.CallbackQuery):
    await query.message.edit_text(get_value())
  • Вопрос задан
  • 574 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
@teenager_python
Чтобы кнопка оставалась под сообщением, можно использовать параметр reply_markup в методе edit_text и передавать в него тот же объект InlineKeyboardMarkup, который был создан при инициализации кнопки. Также можно использовать параметр disable_notification=True, чтобы убрать уведомление о сообщении с кнопкой.

mykb = InlineKeyboardMarkup(row_width=1)
mybt = InlineKeyboardButton(text="Обновить курс", callback_data="refresh")
mykb.add(mybt)

@dp.message_handler(commands=['start'])
async def cmd_start(message: types.Message):
    await message.reply(get_value(), reply_markup=mykb)

@dp.callback_query_handler(text="refresh")
async def send_welcome(query: types.CallbackQuery):
    await query.message.edit_text(get_value(), reply_markup=mykb, disable_notification=True)


Также не забудьте добавить обработку ошибок в случае, если сообщение, которое нужно отредактировать, было удалено или изменено другим пользователем.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 75 000 ₽
ITK academy Нижний Новгород
от 75 000 до 125 000 ₽