сохранение данных пользователя после нажатия на кнопку 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, если это не сделано
