Бот создан для решения нескольких задач внутри компании.
- внутри коллектива сформировать группы для налаживания дружеских отношений между разными людьми за обедом
- дать информацию персоналу на кухне о нужном количестве людей, на которых нужно готовить еду
При инициализации, бот запросит у пользователя пароль. Это сделано для того, чтобы отсеять "чужих" пользователей. Далее, пользователям доступно несколько кнопок для быстрого набора команд. Алгоритм работает следующим образом: бот ожидает конкретную команду от пользователя, затем даёт на неё ответ. Внутри алгоритма создается датабаза в виде пустого массива и состояние, в котором хранится делитель общего количества людей на группы. Бот имеет временную активность, которую проявляет только с ПН по ПТ (по рабочим дням компании). Вся активность отображается индивидуально для каждого пользователя (сообщения присылаются персонально). Так как это бот, а не сообщество, то общего чата не предусмотрено.
*команды чувствительны к символам, регистру и эмодзи!
1. '/start' - инициализирует бота. Расположена в конпке Menu
2. 'Участвовать 🙋🏼♂️' - добавляет пользователя в базу данных в виде объекта
3. 'Список участников 👩💼👨💼🧑🏻💼' - выводит общий список пользователей в формате ИМЯ ФАМИЛИЯ
4. 'Общее количество 🧮' - выводит общее кол-во пользователей в виде числа
5. 'Не пойду 🚫' - удаляет пользователя из базы данных
Бот работает в режиме сессии. Каждый пользователь, который инициализирует бота '/start'
, попадает в сессию. При перезагрузке сервера, или сетевых проблемах, сессия бота обнуляется. Это значит, что все пользователи должны заново инициализировать бота '/start'
, либо ввести любую команду, иначе они не получат никаких сообщений. Для решения этой проблемы создан файл usersColl.json. Каждый пользователь, который инициализировал бота, попадает в этот файл в виде объекта с мета-данными. Файл фильтруется по userID, что исключает дубли. Временная активность бота будет рассылаться, исходя из usersColl.json по chatID пользователей.
- В 10:00 бот присылает уведомление о текущем кол-ве людей, желающих пойти на совместный обед
- В 11:00 бот формирует группы и отправляет каждому пользователю. Группы идут на обед в 12:00 / 12:30 / 13:00
- В 14:00 бот очищает базу данных
*Для запуска требуются: ОС Linux, пакетный менеджер npm, Node.js версии не ниже 18.х
- Скопируйте репозиторий в локальное хранилище
git clone https://github.com/vlad1slove1/kitchenBot.git <имя_директории>
- Перейдите в директорию с ботом
cd <имя_директории>
- Установите зависимости
npm ci
- Создайте нового телеграм-бота с помощью BotFather по Инструкции
- Скопируйте персональный TELEGRAM_BOT_TOKEN из чата с BotFather
- Отредактируйте файл .env.example
BOT_TOKEN=<token вашего бота>
PORT=<рекомендуется поставить 3000>
AUTH_PASS=<пароль для входа при первой инициализации бота>
- Переименуйте файл .env.example на .env
- Запустите приложение командой
npm run dev
- Найдите вашего бота через @<имя_нового_бота>
*Пока приложение запущено, терминал у вас будет занят. Если вы не хотите останавливать приложение и пользоваться терминалом - откройте новый терминал. Чтобы остановить приложение в текущем терминале дважды нажмите комбинацию ctrl + C
- javascript
- telegraf.js framework
- express.js
- node-cron