Skip to content

Latest commit

 

History

History
72 lines (56 loc) · 6.32 KB

README.md

File metadata and controls

72 lines (56 loc) · 6.32 KB

Telegram bot для совместных обедов

Бот создан для решения нескольких задач внутри компании.

  • внутри коллектива сформировать группы для налаживания дружеских отношений между разными людьми за обедом
  • дать информацию персоналу на кухне о нужном количестве людей, на которых нужно готовить еду

Функционал

При инициализации, бот запросит у пользователя пароль. Это сделано для того, чтобы отсеять "чужих" пользователей. Далее, пользователям доступно несколько кнопок для быстрого набора команд. Алгоритм работает следующим образом: бот ожидает конкретную команду от пользователя, затем даёт на неё ответ. Внутри алгоритма создается датабаза в виде пустого массива и состояние, в котором хранится делитель общего количества людей на группы. Бот имеет временную активность, которую проявляет только с ПН по ПТ (по рабочим дням компании). Вся активность отображается индивидуально для каждого пользователя (сообщения присылаются персонально). Так как это бот, а не сообщество, то общего чата не предусмотрено.

Доступные команды

*команды чувствительны к символам, регистру и эмодзи!

1. '/start' - инициализирует бота. Расположена в конпке Menu
2. 'Участвовать  🙋🏼‍♂️' - добавляет пользователя в базу данных в виде объекта
3. 'Список участников  👩‍💼👨‍💼🧑🏻‍💼' - выводит общий список пользователей в формате ИМЯ ФАМИЛИЯ
4. 'Общее количество  🧮' - выводит общее кол-во пользователей в виде числа
5. 'Не пойду  🚫' - удаляет пользователя из базы данных

Обработка сессии бота

Бот работает в режиме сессии. Каждый пользователь, который инициализирует бота '/start', попадает в сессию. При перезагрузке сервера, или сетевых проблемах, сессия бота обнуляется. Это значит, что все пользователи должны заново инициализировать бота '/start', либо ввести любую команду, иначе они не получат никаких сообщений. Для решения этой проблемы создан файл usersColl.json. Каждый пользователь, который инициализировал бота, попадает в этот файл в виде объекта с мета-данными. Файл фильтруется по userID, что исключает дубли. Временная активность бота будет рассылаться, исходя из usersColl.json по chatID пользователей.

Временная активность бота

  1. В 10:00 бот присылает уведомление о текущем кол-ве людей, желающих пойти на совместный обед
  2. В 11:00 бот формирует группы и отправляет каждому пользователю. Группы идут на обед в 12:00 / 12:30 / 13:00
  3. В 14:00 бот очищает базу данных

Запуск локально

*Для запуска требуются: ОС Linux, пакетный менеджер npm, Node.js версии не ниже 18.х

  1. Скопируйте репозиторий в локальное хранилище
git clone https://github.com/vlad1slove1/kitchenBot.git <имя_директории>
  1. Перейдите в директорию с ботом
cd <имя_директории>
  1. Установите зависимости
npm ci
  1. Создайте нового телеграм-бота с помощью BotFather по Инструкции
  2. Скопируйте персональный TELEGRAM_BOT_TOKEN из чата с BotFather
  3. Отредактируйте файл .env.example
BOT_TOKEN=<token вашего бота>
PORT=<рекомендуется поставить 3000>
AUTH_PASS=<пароль для входа при первой инициализации бота>
  1. Переименуйте файл .env.example на .env
  2. Запустите приложение командой
npm run dev
  1. Найдите вашего бота через @<имя_нового_бота>

*Пока приложение запущено, терминал у вас будет занят. Если вы не хотите останавливать приложение и пользоваться терминалом - откройте новый терминал. Чтобы остановить приложение в текущем терминале дважды нажмите комбинацию ctrl + C

Стек