Задать вопрос
@SiberianGamer

Машина состояний Aiogram сложность в правильном построении кода разъясните в чем ошибка и как исправить?

Ребят такой вопрос где я накосячил, пытаюсь сделать себе бота для записи пациентов. Хочу чтоб когда пользователь нажимал на кнопку вся информация записывалась через машину состояний, а после чтоб я спокойно в конце ответным письмом мог выдать ему результат по типу: Вы ФИО записаны к врачу Категория и ФИО врача, а так же предварительная дата, нормер телефона и конечное подтверждение. Пока не могу понять как завершить этот этап кода чтоб получилось то что хочется. Последняя часть кода не завершена, не могу догнать как правильно это сделать.
@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()
  • Вопрос задан
  • 986 просмотров
Подписаться 1 Средний 7 комментариев
Пригласить эксперта
Ответы на вопрос 1
@MEDIOFF
Python Developer
data = await state.get_data()
и потом делайте с ней что хотите
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы