dr_fap
@dr_fap
Обитатель Пустоши, который исследует интернет.

Почему Callback кнопка не работает в Aiogram?

Привет, не работает вызов от Callback-кнопки. Ситуация такова, что человек находится в состоянии. Он бездействует некоторое время и ему приходит сообщение-"напоминалка". С сообщением всё хорошо, но вот Inline-кнопка не реагирует.

Код самой напоминалки с кнопкой:

async def send_notes(dp: Dispatcher):
    _leads = notes.find({'stage': 'Определенное состояние'})

    keyboard = types.InlineKeyboardMarkup()
    keyboard.add(types.InlineKeyboardButton(text="Отказаться", callback_data="fail"))

    for lead in _leads:
        curr = datetime.now() - lead['data']
        if curr.seconds > 900:
            await dp.bot.send_message(
                chat_id=lead['_id'],
                text=f"<b>{lead['name']}</b>, слушай!  Ты долго будешь морозиться? Бесишь прям!"
                     f"\n\nЕсли у тебя есть вопросы, можешь написать ему - {str(lead['owner']).split()[1].lstrip('(').rstrip(')')}",
                parse_mode=ParseMode.HTML,
                reply_markup=keyboard
            )


Далее код того обработки Callback-кнопки:

@dp.callback_query_handler(text="fail")
async def fail_agent(call: types.CallbackQuery, state: FSMContext):
    await call.message.answer("Печально, а ты мне так понравился ", reply_markup=types.ReplyKeyboardRemove())
    await state.finish()


Инфо в логах:
INFO:aiogram.contrib.middlewares.logging:Received callback query [ID:3x80] from user [ID:5x76] for message [ID:1149] in chat [private:5x76] with data: fail originally posted by user [ID:5x57]
INFO:aiogram.contrib.middlewares.logging:Unhandled callback query [ID:3x80] from user [ID:5085642476] for message [ID:1149] in chat [private:5x76] with data: fail originally posted by user [ID:5x57]
INFO:aiogram.contrib.middlewares.logging:Process update [ID:8x73]: [success] (in 1 ms)


Подскажите, что тут не так?
  • Вопрос задан
  • 2949 просмотров
Пригласить эксперта
Ответы на вопрос 1
@twistfire92
Python backend developer
text="fail" в хендлере - это про текст кнопки, а не callback_data.
меняйте на
@dp.callback_query_handler(lambda call: call.data == 'fail')
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы