Всем привет, бот на aiogram и вот у меня вопрос, который задал выше. Зачем мне это надо - я создал маленькую регистрацию клиента - Имя, фамилия, номер телефона и тд, которые добавляются в БД:
@dp.message_handler(state=reg.login, content_types=types.ContentTypes.TEXT)
async def reg_password(message:types.Message,state:FSMContext):
if any(map(str.isdigit, message.text)):
await message.reply("Повторите попытку")
return
await state.update_data(name_user = message.text)
await message.answer("Отлично, будем знакомы!\n\nСледующий шаг - введите место, откуда вы(куда везти товар):")
await reg.place.set()
@dp.callback_query_handler(text = 'yes',state = reg.last)
async def yes_message(call:types.CallbackQuery, state:FSMContext):
await call.message.reply('Добро пожаловать в магазин "Мир Цветов".\nНажмите /help для дальнейших действий')
user_data = await state.get_data()
name = user_data["name_user"]
place = user_data["place_user"]
phone = user_data["phone_user"]
print(name, place, phone)
user = [name, place, phone]
cur = con.cursor()
cur.executemany('INSERT INTO users (user_name, user_place, user_phone) VALUES (?, ?, ?)',(user,))
con.commit()
await state.finish()
Дальше у меня есть функция добавления в ту же БД товара, который заказал клиент:
@dp.callback_query_handler(lambda c: c.data.startswith('add_'),state = '*")
async def add_to_cart(call: types.CallbackQuery, state:FSMContext):
operation = call.data.split('_')[0]
current_item = int(call.data.split('_')[-1])
item = items[current_item]
prices = price[current_item]
user_data = await state.get_data()
name = user_data["name_user"]
print(f"Имя - {user_data['name_user']}")
cur = con.cursor()
cur.execute(' INSERT INTO users(user_item) VALUES (item) WHERE user_name = name ')
И вот дальше я не понимаю - мне надо привязать этот товар к определенному человеку, который только что зарегался, а когда я пытаюсь таким способом вытянуть из State's его имя, чтобы потом пришить эти товары к этому человеку в БД - ошибка
print(f"Имя - {user_data['name_user']}")
KeyError: 'name_user'