Skip to content

Telegram Bot для записи на услуги разных сфер на базе API от Yclients

Notifications You must be signed in to change notification settings

15project/your-client.tgbot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Автоматизация процесса записи на услуги с помощью Telegram Bot

Это програмный продукт, который с помощью предопределенных провайдоров данных осуществлять бронирование/запись на услуги любой организации

Реализованные бизнес-процессы

  • Авторизация
  • Выбор филиала
  • Выбор услуги
  • Выбор даты и время записи
  • Выбор специалиста
  • Подверждение записи
  • Сбросить свои персональные данные

Развертывание

Обязательное условие создать свой .env файл и прописать свои значения

$ cp /app/.env.example /app/.env 

Для локального развертывания необходимо установить Node >v18.18

$ cd ./app
$ npm istall
$ npm run dev

Или иметь установленный Docker >v26.0.0

$ docker-compose up -d --build

Для развертывания на prod необходимо собрать образ, если есть необходимость:

$ docker build -f ./deploy/docker/node.prod.Dockerfile -t Заменить_на_название_образа:Заменить_на_тег_образа .
$ docker push Заменить_на_название_образа:Заменить_на_тег_образа

Используемые пакеты и технологии

Для стабильной и надежной работы приложения были использованы актуальные и проверенные продукты

  • Используется NodeJS v18.18 для работы кода
  • Для защиты типов данных JS и стабильной работы приложения TypeScript
  • Используемая база данных SQLite
  • Для осуществления взаимодействия с Telegram API telegraf
  • Валидация входных данных zod
  • ORM для взаимодействия с базой данных Prisma
  • Для dev и prod развертывания используется Docker

В проекте активно используется YCLIENTS REST API

Для работы бота требуется создать в системе YCLIENTS компанию и ввести свой токен авторизации, а так же требуется зависти кабинет разработчика для получения Bearer токена

Структура проекта

Примечание:

  • ? - файлы/папки те, что не грузятся на Git
  • * - лишние файлы/папки те, что не используятся
.
├── .github // CI/CD приложения
|   ├── workflows // содержит action для GitHub
|   |   └── deploy-prod.yml // конфиг развертывания приложения на сервере 
├── app // папка приложения 
|   ├── build? // собранный проект для продакшена
|   ├── node_modules? // зависимости/пакеты приложения
|   ├── prisma // папка для работы ORM Prisma
|   |   ├── migrations // все изменения БД для миграции проекта
|   |   └── schema.prisma // описание БД, а так же моделей БД
|   ├── src // исходных код
|   |   ├── handlers // реализация обработчиков tgbot/telegraf
|   |   ├── middlewares // перехватчики авторизации tgbot/telegraf
|   |   ├── models // описание данных в виде структуры 
|   |   ├── providers // виды реализаций хранения/получения данных 
|   |   ├── scenes* // определенные сцены работы tgbot/telegraf
|   |   ├── servises // логика системы и работа с моделями
|   |   ├── views // представления данных для пользователя tgbot/telegraf
|   |   ├── context.ts // кастомный контекст сообщения для tgbot/telegraf
|   |   ├── db.ts // подключение базы данных
|   |   ├── env.ts // валидация evn параметров
|   |   ├── handler.ts // регистрация обработчиков
|   |   ├── index.ts // точка входа в приложение
|   |   ├── middleware.ts // регистрация перехватчиков работы
|   |   └── provider.ts // регистрация провайдоров
|   ├── .env? // параметры запуска приложения (описаны в src/env.ts)
|   ├── .env.example // пример .env.example
|   ├── nodemon.json // настройка nodemon для автоматической перегрузки приложения
|   ├── package.json // описание проекта/сторонних пакетов/зависимостей
|   ├── package-lock.json // локальное описание проекта/сторонних пакетов/зависимостей
|   └── tsconfig.json // настройка TypeScript
├── deploy // файлы деплоя на prod/dev
|   ├── docker // конфиги Dockerfile
|   |   ├── node.dev.Dockerfile // для локальной разработки
|   |   └── node.prod.Dockerfile // для разветывания на сервер
|   └──scripts // скрипты использующиеся при деплое
|      └── startup.sh // скрипт запуска приложения (миграция + старт приложения)
├── volumes? // содержит все данные, которые сохраняются
|   └── sqlite-volume // данные базы данных
├── .gitignore // описание файлов, которые не попадают в git
├── docker-compose.yml // конфиг docker-compose для dev
├── docker-compose-prod.yml // конфиг docker-compose для prod
└── README.md 

About

Telegram Bot для записи на услуги разных сфер на базе API от Yclients

Topics

Resources

Stars

Watchers

Forks