Не отвечает @dp.callback_query_handler(lambda call: True)

Нет отклика на нажатие кнопки. Ошибок нет, просто не выполняется дальнейшие действия.

Динамически создаю клавиатуру.

def genmarkup(data): 
    
    markup = types.InlineKeyboardMarkup()
    for key in data:
        markup.add(
                types.InlineKeyboardButton(text='text' + str(key),
                                            callback_data="['value', '" + str(key) + "', '" + str(key) + "']")
                )
    return markup

Хендлер

@dp.message_handler(state=new_rah.new_acc)
async def add_acc_2(message: types.Message, state: FSMContext):
    async with state.proxy() as data_fsm:
        data_fsm["new_acc"] = int(message.text)
         data =  cur.execute("select lsid from egn_cards where tg_id = (?) ", (b[0],)).fetchall()
        print(data)
        db.commit()

        await bot.send_message(
            message.from_user.id, "text", reply_markup=genmarkup(data)

Обработчик нажатия(у меня есть два варианта)

@dp.callback_query_handler(lambda call: True)
async def stoptopupcall(callback_query: types.CallbackQuery):
    await bot.answer_callback_query(callback_query.id)
    userinfo = cur.execute('SELECT * FROM egn_cards WHERE tg_id = (?)', (callback_query.data, )).fetchone()
    if userinfo:
        await bot.send_message(callback_query.from_user.id, f'ID: {userinfo[0]}')
@dp.callback_query_handler(lambda call: call.data.startswith=="['value'")
async def handle_query(call, callback: types.CallbackQuery):

    
    if  call.data.startswith == "['value'":
        keyFromCallBack = ast.literal_eval(call.data)[1]   
        await bot.answer_callback_query(callback_query_id=call.id, text="You Clicked " + keyFromCallBack)

Прошу помощи разобраться в чём причина залипона.


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

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

Вы отвечаете через объект бота когда у вас есть объект запроса

@dp.callback_query_handler(lambda call: call.data.startswith=="['value'")
async def handle_query(call, callback: types.CallbackQuery):

    
    if  call.data.startswith == "['value'":
        keyFromCallBack = ast.literal_eval(call.data)[1]   
        await bot.answer_callback_query(callback_query_id=call.id, text="You Clicked " + keyFromCallBack)
 

используйте

callback.message.answer('Я реагирую на кнопку')
→ Ссылка