Answer the question
In order to leave comments, you need to log in
How to use the entered data in state in other functions?
Hello everyone, the bot is on aiogram and here is my question that I asked above. Why do I need this - I created a small client registration - First name, last name, phone number, etc., which are added to the database:
@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 ')
print(f"Name - {user_data['name_user']}")
KeyError: 'name_user'
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question