сохранение данных пользователя после нажатия на кнопку aiogram

Мне нужно сохранить логин и пароль пользователя, пытаюсь реализовать это через состояния. Проблема в том, что после нажатия на кнопку "Решить тест" мне нужно, чтобы вывелось ботом сообщение "Введи свой логин", и сохранить ответ пользователя в переменную, потом так же сделать с паролем, но вместо этого сообщение "Введи свой логин" появляется вверху диалога, где обычно висит "Загрузка".

class Form(StatesGroup):
    login = State()
    password = State()

@router.callback_query(F.data == 'test') # то есть после нажатия на кнопку "Решить тест" (callback_data = 'test')
async def test(message: types.Message, state: FSMContext):
    await message.answer(text="Введи свой логин:")
    await state.set_state(Form.login)

@router.message(Form.login)
async def login(message: types.Message, state: FSMContext):
    await state.update_data(login=message.text)
    await message.answer(text="Введи свой пароль:")
    await state.set_state(Form.password)

@router.message(Form.password)
async def password(message: Message, state: FSMContext):
    await state.update_data(password=message.text)
    await message.answer(
        text='Отлично!'
    )
    await state.clear()

скрин работы бота после нажатия на кнопку "Решить тест"


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

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

Насколько я понял, вам нужно отправить сообщение в чат, а не уведомление. Для этого нужно обратиться к CallbackQuery

Хэндлер будет выглядеть следующим образом:

@router.callback_query(F.data == 'test') # то есть после нажатия на кнопку "Решить тест" (callback_data = 'test')
async def test(message: types.Message, callback: types.CallbackQuery, state: FSMContext):
    await callback.message.answer(text="Введи свой логин:")
    await state.set_state(Form.login)

Не забудьте импортировать CallbackQuery, если это не сделано

→ Ссылка