S
S
SiberianGamer2021-09-22 21:00:33
SiberianGamer, 2021-09-22 21:00:33

Aiogram state machine difficulty in building the code correctly, explain what the error is and how to fix it?

Ребят такой вопрос где я накосячил, пытаюсь сделать себе бота для записи пациентов. Хочу чтоб когда пользователь нажимал на кнопку вся информация записывалась через машину состояний, а после чтоб я спокойно в конце ответным письмом мог выдать ему результат по типу: Вы ФИО записаны к врачу Категория и ФИО врача, а так же предварительная дата, нормер телефона и конечное подтверждение. Пока не могу понять как завершить этот этап кода чтоб получилось то что хочется. Последняя часть кода не завершена, не могу догнать как правильно это сделать.

@dp.message_handler(CommandStart())
async def bot_start(message: Message):
    await message.answer("Приветствую Вас! Я виртуальный помошник!\nЧего изволите?",
                         reply_markup=mainmenu)


@dp.message_handler(Text(equals="Записаться на прием"),state=None)
async def zap_patient(message: Message):
    await message.answer(f"Выберите подходящую категорию врачей", reply_markup=category)
    await Registration.Doctor.set()


@dp.message_handler(Text("Стоматолог"), state=Registration.Doctor)
async def stom(message: Message, state: FSMContext):
    answer = message.text
    await state.update_data(
        {"stom": answer}
    )
    await message.answer(f"Выберите подходящего врача", reply_markup=stomatolog)
    await Registration.NameDoc.set()


@dp.message_handler(Text("Асташов Владислав,\nстоматолог хирург"), state=Registration.NameDoc)
async def astashov(message: Message, state: FSMContext):
    answer = message.text
    await  state.update_data(
        {"astashov":answer}
    )
    await message.answer("На какую дату вам было бы удобно? Выбрать другой день", reply_markup=create_calendar())
    await  Registration.Data.set()


@dp.callback_query_handler(calendar_callback.filter(),state=Registration.Data)  # handler is processing only calendar_callback queries
async def process_name(callback_query: CallbackQuery, callback_data: dict):
    selected, date = await process_calendar_selection(callback_query, callback_data)
    if selected:
        await callback_query.message.answer(f'Предварительная дата {date.strftime("%d/%m/%Y")} \n '
                                        f'Укажите ваш номер телефона по форме +7', reply_markup=ReplyKeyboardRemove())
        await Registration.Number.set()

@dp.message_handler(state= Registration.Number)
async def phone(message: Message, state: FSMContext):
    answer = message.text
    await state.update_data(
        {"phone": answer}
    )
    await message.answer(f'И последнее напишите ваше Имя и Фамилию')
    await Registration.FullName.set()

@dp.message_handler(state=Registration.FullName)
async def Fname(message: Message, state: FSMContext):
    answer = message.text
    await state.update_data(
        {"phone": answer}
    )
    data = await state.get_data()

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Stefan, 2021-09-23
@MEDIOFF

data = await state.get_data()
and then do what you want with it

Similar questions

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question