не могу отлавить ответ reply кнопка iogram

async def get_address(message: types.Message, state: FSMContext):
    await state.update_data(name=message.text)
    data = await state.get_data()
    querystring = {"query": {data['name']}, "locale": "en_US", "currency": "USD"}
    response = requests.get(url=config.URL, headers=config.headers,  params=querystring)
    data = json.loads(response.text)

    for i in data['suggestions'][0]['entities']:
        city_name.low_reply.add(city_name.KeyboardButton(text=BeautifulSoup(i['caption'], 'lxml').text))
    await message.answer('Уточните, пожалуйста, локацию:', reply_markup=city_name.low_reply) #1
    await state.finish()

мне нужно перейти к другой функции, после того как пользователь выберет район. Если после строки, отмеченной #1, вставить еще один message.answer, то сразу выводится сообщение не получив ответа от пользователя. Название района заранее угадать невозможно до этого пользователь выбирает любой город в мире.


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

Автор решения: asuchachigusa
class UserInfo(StatesGroup):
        Location = State()
        Next = State()

@dp.message_handler(state=UserInfo.Location)
    async def get_address(message: types.Message, state: FSMContext):
        await state.update_data(name=message.text)
        data = await state.get_data()
        querystring = {"query": {data['name']}, "locale": "en_US", "currency": "USD"}
        response = requests.get(url=config.URL, headers=config.headers,  params=querystring)
        data = json.loads(response.text)
    
        for i in data['suggestions'][0]['entities']:
            city_name.low_reply.add(city_name.KeyboardButton(text=BeautifulSoup(i['caption'], 'lxml').text))
        await message.answer('Уточните пожалуйста локацию:', reply_markup=city_name.low_reply)
        await UserInfo.Next.set()
        
    @dp.message_handler(state=UserInfo.Next)
    async def new_func(message: types.Message, state: FSMContext):
        await message.answer('next question')
        # И в самом конце цепочки - await state.finish()

Чтобы перейти к функции get_address вам нужно прописать await UserInfo.Location.set()

→ Ссылка