Бот записи без сети · Шаг 4 из 4
Записать или снять
Человек сказал «да» — пора записывать. Но пока он выбирал, в бот писали и другие: последнее окно на четверг могли занять за те полминуты, что он думал. Проверять надо в момент записи, а не в момент вопроса.
И у Валеры правило: одна машина от человека в день. Записался на утро и хочешь ещё на вечер — сначала сними первую запись. Снять свою запись бот тоже должен уметь — командой «/snyat».
Что сделать
Запишите человека на выбранное время, если оно ещё свободно, или снимите все его записи — смотря что пришло из разговора.
Что приходит
zapisi— все записи автосервиса: словари{"chat": …, "den": …, "vremya": …, "usluga": …}chat— кто пишет боту: имя чата, например"Олег"sostoyanie— состояние из шага 2:{"shag": "gotovo", "usluga": …, "den": …, "vremya": …}или{"shag": "snyat"}
Что вернуть
Пару (ответ, новые_записи): строка для человека и новый список записей; полученный список не меняйте.
Допишите функцию zapisat в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Бот зовёт zapisat, когда разговор дошёл до gotovo или snyat, и сохраняет новые записи в zapisi.json. Решите шаг — и бот начнёт записывать по-настоящему.
zapisat([], "Олег", {"shag": "gotovo", "usluga": "ТО", "den": "03.12", "vremya": "10:00"})
('Готово! Ждём вас 03.12 в 10:00, ТО.', [{'chat': 'Олег', 'den': '03.12', 'vremya': '10:00', 'usluga': 'ТО'}])
Шаг gotovo — записать на den и vremya с usluga. Проверки по порядку:
- У этого
chatуже есть запись на этот день → «У вас уже есть запись на 03.12 в 10:00 — Валера принимает одну машину от человека в день.» (день и время — той записи), записи не меняются. - На этот день и время уже записаны две машины → «Пока вы выбирали, 11:00 на 03.12 заняли. Напишите /zapis и выберите другое время.», записи не меняются.
- Иначе — новая запись
{"chat", "den", "vremya", "usluga"}в конец списка и «Готово! Ждём вас 03.12 в 11:00, шиномонтаж.»
Шаг snyat — убрать все записи этого chat. Не было ни одной — «У вас нет записей.». Была одна — «Снята запись: 03.12 в 10:00.», несколько — «Сняты записи: 03.12 в 10:00, 05.12 в 09:00.» — в том порядке, в каком они лежали в списке. Чужие записи остаются как были.
Полученный список не меняйте — верните новый.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.