Не обрабатывается Inline кнопка;

есть код:

@dp.callback_query_handler(function=lambda c: c.data)
async def inlines(c):
    if c.data == 'нет':
        await bot.send_message(c.message.from_user.id, 'привет')

он должен обработать нажатие Inline кнопки и написать сообщение;

но он выводит ошибку, что фильтр удалён:

 raise NameError("Invalid filter name(s): '" + "', ".join(full_config.keys()) + "'")
NameError: Invalid filter name(s): 'function'

как я понимаю этот способ уже не работает;

как мне обработать callback Inline кнопок?


Ответы (2 шт):

Автор решения: Alex Zab

Не существует c и function ! Вместо этого call и func!
Правильное построение -

@dp.callback_query_handler(func=lambda call: True)
async def answer(call):
    if call.data == 'pgtod': # Calldata лучше писать на английском)
        await bot.send_message(call.message.from_user.id, 'привет')
→ Ссылка
Автор решения: oleksandrigo

От части @Alex_Zab прав, но.. пожалуйста прекратите делать так как делаете вы. Делайте так

@dp.callback_query_handler(text="нет")
async def inlines(callback: types.CallbackQuery):
    await bot.send_message(callback.message.from_user.id, 'привет')

text проверяет то что написано в колбек дате, а если месседж хендлер, то то что написано в сообщении. Есть ещё text_startswith, text_endswith, text_contains. С чего начинается, чем заканчивается и содержит ли.

В общем не делайте этот "лямбда колл равен тру", это какой-то кошмар который пришел с телебота.

→ Ссылка