Telegram bot прототип на node js
Цена договорная
•
безналичный расчёт, электронные деньги
(картинки что то плохо масштабируются, по запросу сброшу оригинальные ссылки, либо сами перейдите по ссылке)
Требуется реализовать 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` должен запускаться сервер
Требуется реализовать 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` должен запускаться сервер
Отзывы
Крайне рекомендую Георгия как заказчика! Отличный бэкграунд как программиста и архитектора - ТЗ всегда чёткое и продуманное в плане оптимальности реализации и интеграции в более глобальный проект! Приятно иметь дела, особенно помня каково работать с размытыми/недопродуманными ТЗ - радикальный контраст!
Разовый проект перерос в долгосрочное (окт-фев) сотрудничество, все договорённости выполняются в срок и в полном объме, коммуникация очень оперативная!
Разовый проект перерос в долгосрочное (окт-фев) сотрудничество, все договорённости выполняются в срок и в полном объме, коммуникация очень оперативная!
5 лет
назад
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.
Начали с разового заказа-прототипа, затем появились долгосрочные периодические работы (nodejs, JavaEE) - в итоге поставленные задачи выполнены, вместе с кодом оформлялась достаточная документация, будем работать и в дальнейшем.