Войти Создать аккаунт

Бот записи без сети · Шаг 2 из 4

Ход разговора

Записаться — это не одно сообщение, а разговор: что делаем, в какой день, во сколько, всё верно? Бот между сообщениями ничего не помнит сам: Telegram присылает их по одному, и каждое может быть ответом на свой вопрос — или командой посреди разговора, «/otmena», когда человек передумал.

Поэтому бот хранит состояние — на каком шаге разговор и что уже выбрано, — и на каждое сообщение отвечает по одному правилу: состояние и сообщение → ответ и новое состояние. Это машина состояний, и на ней сделан любой бот записи.

Что сделать

По состоянию разговора и новому сообщению решите, что ответить и в каком состоянии остаться.

Что приходит

  • sostoyanie — словарь: {"shag": "den", "usluga": "ТО"} — на каком шаге разговор и что уже выбрано

  • soobshchenie — разобранное сообщение из шага 1: ("komanda", "zapis") или ("tekst", "2")

  • okna — свободное время по дням: {"03.12": ["09:00", "11:00"], "04.12": []}

Что вернуть

Пару (ответ, новое_состояние): строка ответа и новый словарь; полученный словарь не меняйте.

Допишите функцию shag в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В проекте

Бот зовёт shag на каждое сообщение и запоминает новое состояние до следующего. Решите шаг — и с ботом можно будет поговорить: он спросит, что делаем, когда и во сколько.

Пример

Разговор начинается в {"shag": "nachalo"}. Человек пишет /zapis — бот отвечает «Что делаем? 1 — ТО, 2 — шиномонтаж, 3 — диагностика.» и переходит в {"shag": "usluga"}. Человек пишет 2 — бот спрашивает день и переходит в {"shag": "den", "usluga": "шиномонтаж"}.

Тот же пример кодом
Вызов
shag({"shag": "nachalo"}, ("komanda", "zapis"), {"03.12": ["09:00"]})
Вернуть
('Что делаем? 1 — ТО, 2 — шиномонтаж, 3 — диагностика.', {'shag': 'usluga'})
Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.