Telegram bot прототип на node js

Цена договорная • безналичный расчёт, электронные деньги
16 октября 2018, 20:41 • 7 откликов • 47 просмотров
(картинки что то плохо масштабируются, по запросу сброшу оригинальные ссылки, либо сами перейдите по ссылке)

Требуется реализовать telegram бота (прототип)
Прототип подразумевает не продакшн версию

Студии\агенства не интересуют

Использовать клиента https://github.com/telegraf/telegraf (либо аргументированно предложить другой клиент)

WorkFlow
- пользователь переходит по ссылке, в сылке зашита какая то строка (это результат того что сработал /start с аргументами)
- сохранили пользователя (username, ID (первичная информация по поьзователю) + то что было в аргументах запроса)
- (если ранее не было пользователя в базе) запросили имя, далее возраст (в 2 шага) и сохранили в БД
- (если данные о пользователе ранее были) то переходим к главному меню. На главное меню не попасть и ни какую другую команду не вызвать если пользователь не ввел свое имя и возраст
- В главно меню три пунтка меню
- [1] Редактировать данные
- [2] Пройти опрос
- [3] Мои ответы
- Ожидаемые события в главном меню:
- [4] Клиент отправляет текущую локацию
- [5] Клиент отправляет live текущей локации

В случае [1] переходим на экраны редактирования своих данных. В каждом сообщении есть кнопка (inline button) завершить редактирование при клике на которую переходим обратно на главное меню.



При клике на [2] (иммитируем взятие случайного вопроса из базы). Формат вопроса простой - есть текст сообщения и 3-5 вариантов ответа, либо свой вариант.
В случае если вопрос состоит из нескольких вопросов `querion_next` не пустой - то после полученного ответа (иммитируем) отображение следующего запроса.

Структура данных
```json
querion_id: "",
question_text: "Какой вам больше нравится шоколад?", // Текст сообщения
next_question: "", // Идентификатор следующего вопроса
free_answer: false, // если true то позволено клиенту отправить ответ в свободной форме. В противном случае обязательно надо выбрать ответ
choices: [
{text: "Белый", id: "1"},
{text: "Горький", id: "2"},
{text: "Молочный", id: "3"},
]
```

[3] отображаем с пагинацией (по 3 позиции) последние ответы на вопросы в формате `Текст сообщения: ответ`.
Пагинацию делать как в боте @spotifybot





В обоих случаях [4], [5] бот отправляет ту же полученную локацию (echo) в период 30 секунд. Обновлять сообщение а не добавлять новое.

Иммитируем работу с БД - в глобальном окружении создать мапу и там хранить пользователей
Иммитируем сохранение в БД всех ответов пользователей
Иммитируем взятие из БД вопросы - зашить в коде массив вопросов. Не рассматриваем случай если вопросы зацикливаются
В лог логировать все получаемые и отправляемые данные

Результат работы в виде
- package.json файла с перечисленными нужными пакетами и прочим для первичного сетапа проекта
- index.js (в коде зашит токен от бота)

По команде `node index.js` должен запускаться сервер
Отзывы
R50 1953732190ce943356f4797bd68be879
Заказчик
Доволен сотрудничеством! Очень приятно удивлен способностью масштабно и системно видеть поставленные задачи (такое качество нынче большая редкость). Взвешенный взгляд на плюсы и минусы каждого из возможных векторов развития.
Начали с разового заказа-прототипа, затем появились долгосрочные периодические работы (nodejs, JavaEE) - в итоге поставленные задачи выполнены, вместе с кодом оформлялась достаточная документация, будем работать и в дальнейшем.
~ 5 лет назад
R50 2fa5ddd3ff25b273eaec0bebfcff36c2
Фрилансер
Крайне рекомендую Георгия как заказчика! Отличный бэкграунд как программиста и архитектора - ТЗ всегда чёткое и продуманное в плане оптимальности реализации и интеграции в более глобальный проект! Приятно иметь дела, особенно помня каково работать с размытыми/недопродуманными ТЗ - радикальный контраст!
Разовый проект перерос в долгосрочное (окт-фев) сотрудничество, все договорённости выполняются в срок и в полном объме, коммуникация очень оперативная!
~ 5 лет назад