Не отвечает @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('Я реагирую на кнопку')