CallbackData doesn't work.filter is unclear. 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')
    


  • Well, you've got a processor to capture a specific value, but you don't give it anywhere.

    For:

    bcd = InlineKeyboardMarkup(row_width=3,
        inline_keyboard=[
            [
                InlineKeyboardButton(
                    text='Описание',
                    callback_data="descrip",
    
            ),
        
        
            InlineKeyboardButton(
                text='Оплатить',
                callback_data="buy"
            ),
        
        
            InlineKeyboardButton(
                text='Отмена',
                callback_data="cancel"
            )
        ]
    ])
    

    Use:

    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"
            )
        ]
    ])
    



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2