@bot.message_handler(commands=['selection'])
def bujet(message):
    is_age = False
    if not is_age:
        bot.send_message(message.chat.id, "Ваш бюджет:")
        age = 0;
        @bot.message_handler(content_types=['text'])
        def selection(message):   
            try:
                age = int(message.text) #проверяем, что возраст введен корректно
                bot.send_message(message.from_user.id, age)
                is_age = True
            except Exception:
                bot.send_message(message.from_user.id, 'Цифрами, пожалуйста')task_cb = CallbackData("task_menu", "task_type", "task_num")
# array = [{name: 'task_name_1', type: 'c', num: 123456}]
def task_keyboard(array):
    markup = InlineKeyboardMarkup(row_width=2)
    for task in array:
        markup.insert(InlineKeyboardButton(text=task.get('name'),
                                           callback_data=task_cb.new(task_type=task.get("type"),
                                                                       task_num= task.get("num"))))
    return markup
# Ловим колбэк
@dp.callback_query_handler(task_cb.filter())
async def show_task(callback: types.CallbackQuery, callback_data: dict):
    type = callback_data.get("task_type")
    num = callback_data.get("task_num")type = callback[:1]
num= callback[1:]await callback.message.delete_reply_markup()async with state.proxy() as data: вот такой конструкцией четно говоря для хранения данных не пользовался. Пойдите по пути который описан в стандартных мануалах.await state.update_data(name=message.text)state_data = await state.get_data()
name = state_data.get('name')@bot.message_handler(content_types=["text"])
def lalala(message):
    text = message.text
    answer = requests.get('api')
    if 'amazon' in text:
        try:
            product_id = text.split('/', 6)[5]
            bot.send_message(message.chat.id, f'Amazon - json.loads(answer.text)[0]['title']')
        except Exception:
            bot.send_message(message.chat.id, 'Не верная ссылка')
    text = message.text  #  Вот это не понятная строчка, но наверное смысл есть, но он глубок@dp.message_handler(Command("start"), state='*')
async def show_menu(message: types.Message, state: FSMContext):
    await state.finish()
    await States.first.set()
    .........@dp.callback_query_handler(callback_data.filter(), state=States.first)
async def first_step(callback: types.CallbackQuery, state: FSMContext):
    .....