Как отправить в FSM номер нажатой кнопки?

Как отправить в FSM номер нажатой кнопки? Будет несколько шагов в FSM, и надо чтобы во всех шагах name1, name2 можно было прочитать переменную с номером нажатой кнопки.

class states(StatesGroup):
    name1 = State()
    name2 = State()

@dp.callback_query_handler(text='edit')
async def edit(query: CallbackQuery):
    sql_data = get('SELECT * FROM table ...')
    keyboard = InlineKeyboardMarkup()
    for i in len(sql_data): 
        keyboard.add(InlineKeyboardButton('text', callback_data = i)) # здесь

    await query.message.edit_text('text', reply_markup=keyboard)
    await states.name1.set()

@dp.message_handler(state=states.name1)
async def name1(message: types.Message, state: FSMContext):
    ii = i # присвоить ii значение из i из предыдущего хэндлера

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

Автор решения: oleksandrigo
for i in len(sql_data):
    keyboard.add(InlineKeyboardButton(f'button {i}', callback_data = f"prefix:{i}"))


@dp.callback_query_handler(text_startswith="prefix:")
async def name_func(call: types.CallbackQyery, state: FSMContext):
    async with state.proxy() as data:
        data["pressed_button"] = call.data.split(":")[1]
    print(call.data.split(":")[1])
    # вот и номер кнопки
→ Ссылка