Answer the question
In order to leave comments, you need to log in
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
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question