@goaheadenvyme

Как сделать динамические сообщения aiogram?

Не получается изменить сообщение с inline клавиатурой aiogram
Не уверен, что верно использовал терминологию в топике (динамические сообщения?)
Посмотрел кучу роликов, разных мануалов, и никак понять не могу, что не так.
При нажатии на кнопку ничего не происходит.

@dp.message_handler(lambda message: message.text.lower() == "как сам")
async def how_are_you(message: types.Message):
    keyboard = InlineKeyboardMarkup().add(InlineKeyboardButton(text="Показать ответ", callback_data="show_answer"))
    await message.answer("как сала килограм", reply_markup=keyboard)

@dp.callback_query_handler(lambda query: query.data == "show_answer")
async def show_answer(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    await bot.edit_message_text(chat_id=callback_query.message.chat.id,
                                message_id=callback_query.message.message_id,
                                text="не знаю",
                                reply_markup=None)


Почти уверен, что ошибся на уровне ниже, чем начинающий, но блин, кажется что попробовал уже все, что только можно, поэтому заранее извиняюсь.
Но уже нахожусь на пороге отчаяния :)
  • Вопрос задан
  • 346 просмотров
Решения вопроса 1
febday
@febday
Во-первых: посмотрите пример работы с инлайн кнопками: *клик*

Во-вторых: не используйте bot.answer_callback_query вместе с редактированием сообщения. В этом нет ошибки, но это лишняя трата одного запроса в секунду. Также что в message_handler, так и в callback_query_handler у объекта сообщения есть встроенные функции, которые облегчают задачу редактирования/ответа. Пример с вамим кодом:
await callback_query.answer()
await callback_query.edit_text(text='не знаю')  # reply_markup нет смысла указывать None, он по дефолту None
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы