Не работает CallbackData.filter причины неясны. Python

purchase.py
from aiogram import types
from aiogram.dispatcher.filters.builtin import Command
from aiogram.types import CallbackQuery
from keyboards.inline.callback_database import buy_callback
from keyboards.inline.menu import bcd, choice
from loader import dp


@dp.message_handler(Command('items'))
async def show_items(message: types.Message):
    await message.answer('Привет, выбери понравившеюся жидкость, для получения информации о ней и дальнейшей оплаты, ну а если ты передумал нажми отмену', reply_markup=choice)



@dp.callback_query_handler(buy_callback.filter(item_name='woody'))
async def buy_woody(call: CallbackQuery, callback_data: dict):
    await call.answer()
    if quantity != 0:
        await call.message.answer('Отличный выбор!\nДля получения подробного описания этой жидкости нажмите кнопку ниже.\nДля продолжения покупки и оплаты нажмите кнопку "Оплатить".\n\nДля отмены выбора нажмите кнопку ниже', reply_markup=bcd)
    else:
        await call.message.answer('Извините данной жидкости сейчас нет в наличии, бот вас уведомит о новом поступлении.\nВыберите другой вкус или нажмите отмену для завершения покупок :(')

@dp.callback_query_handler(buy_callback.filter(item_name='woody'))
async def descripwoody(call: CallbackQuery):
    await call.message.answer('123')

menu.py
bcd = InlineKeyboardMarkup(row_width=3,
    inline_keyboard=[
        [
            InlineKeyboardButton(
                text='Описание',
                callback_data="descrip",

            ),
        
        
            InlineKeyboardButton(
                text='Оплатить',
                callback_data="buy"
            ),
        
        
            InlineKeyboardButton(
                text='Отмена',
                callback_data="cancel"
            )
        ]
    ])

callback_database.py
from aiogram.utils.callback_data import CallbackData

buy_callback = CallbackData('buy', 'item_name', 'quantity')

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

Автор решения: MyZik

Ну так у Вас имеется обработчик на отлавливание конкретного значения, но это значение Вы нигде не передаёте.

Вместо:

bcd = InlineKeyboardMarkup(row_width=3,
    inline_keyboard=[
        [
            InlineKeyboardButton(
                text='Описание',
                callback_data="descrip",

            ),
        
        
            InlineKeyboardButton(
                text='Оплатить',
                callback_data="buy"
            ),
        
        
            InlineKeyboardButton(
                text='Отмена',
                callback_data="cancel"
            )
        ]
    ])

Используйте:

bcd = InlineKeyboardMarkup(row_width=3,
    inline_keyboard=[
        [
            InlineKeyboardButton(
                text='Описание',
                callback_data="descrip",

            ),
        
        
            InlineKeyboardButton(
                text='Оплатить',
                callback_data=buy_callback.new(item_name="woody", quantity=10)
            ),
        
        
            InlineKeyboardButton(
                text='Отмена',
                callback_data="cancel"
            )
        ]
    ])
→ Ссылка