dimameh / cleaning-manager

Моя лень породила этот пет. Чекай вкладку Projects
https://t.me/cleaningManagerDMbot
1 stars 0 forks source link

Система диалога с множеством сообщений #21

Open dimameh opened 8 months ago

dimameh commented 8 months ago

Добавить сущность для ведения диалога с множеством последовтельных сообщений. Например для конфигурации пользователя он должен написать типа "Измени мне время напоминания" и бот должен спросить "На какое?" И пользователь ответить чето вразумительное.

Тут надо добавить обработку неверных ответов, выход из этого диалога и тд. В общем чтобы в дальнейшем это было проще все собирать лучше сделать что то типа класса генератора подобных штук.

dimameh commented 7 months ago

Че тут вообще требуется:

dimameh commented 7 months ago

Как будет работать:

  1. делаю функции которые генерируют возможные диалоги для юзеров.
  2. генерация подразумевает также и получение входных данных, в том числе и из бд. Поэтому должна передаваться функция которая будет реализовывать получение этих данных.
  3. нода содержит сообщение от бота которое генерируется с помощью передаваемой функции которая на вход получает текущие данные диалога.
  4. нода содержит обработку ответа юзера
      • Это либо варианты ответа которые превратятся в кнопки
      • Либо валидатор ответа юзеру.
  5. нода содержит функцию которая проверяет текущие данные функции и определяет нужно ее выбрать как следующую или нет. Если функция возвращает объект с флагом finale, то после ее выполнения диалог прерывается. Она считается результирующей функцией диалога.
  6. нужно реализовать механизм проверки, желательно на уровне тайпскрипта чтобы невозможно было создать на одном уровне проверки которые при одинаковых входных данных имеют одинаковый результат. ( Если возможно и захочется поебаться с этим)
dimameh commented 7 months ago

Кароче проще разобраться с визардами от самой либы чем писать свой. Надо было сразу посмотреть

https://github.com/feathers-studio/telegraf-docs/blob/master/examples/wizards/wizard-with-custom-scene-session.ts