Skip to content

vlad1slove1/kitchenBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Стек