Как отправить в 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])
# вот и номер кнопки