BitBot

Discord bot that checks 3D print status, has custom Makerspace profiles, and more

October 2021 ⬥ Node.js

BitBot

Overview

BitBot is a Discord bot created for UTDesign Makerspace but able to be forked for use by other makerspaces on GitHub. It can link LDAP and Discord accounts, check the status of and manage 3D printers, display custom UTDesign Makerspace profiles, show snippets with useful information, and more. It is written in Node.js using the library Discord.js, uses MongoDB for storage, is deployed on a private server using Docker, and uses various APIs to interact with external services like 3D printing.

Checking on 3D prints

Members can use the /status command to view the status of all 3D printers or a specific print job in the makerspace. The bot will display the status of each printer, including whether it is available for use, in use, offline, or in maintenance. Viewing individual printers shows a picture of the current print job and relevant details, such as the time remaining and the percentage complete.

BitBot status command result showing all printers in the farm
BitBot status command result showing a printer available for use
BitBot status command result showing a printer in use
BitBot status command result showing a printer offline
BitBot status command result showing a printer in maintenance
Various results of the /status command

Linking accounts

Members can link their UTDesign Makerspace LDAP account to their personal Discord account. This provides many benefits, from convenient features for tools in the makerspace to a custom profile they can show off.

Custom profiles

UTDesign Makerspace profiles can be viewed by anyone using the /profile command with a NetID (UT Dallas username) or Discord account or by right-clicking a user and selecting "View Profile". This displays a custom profile with the user's name, profile picture, member status, and completed training.

3D print notifications

Whenever a member with a linked account starts, completes, cancels, or pauses their 3D print, the bot will send a notification to their Discord direct messages. This allows members to keep track of their prints and know when they are done, paused by our print fail detection software, and more.

Easy access to information

When a member sends a message that meets a regex pattern (ex. asking when the makerspace is open) or a member uses the /snippet command, the bot will send a preset message created by officers with the answer to the question. This allows members to quickly get answers to common questions and for officers to easily update the bot with new information, saving our team time and effort.

Position

Lead Developer

Stack

Discord.js, Docker, Google Calendar API, MariaDB, MongoDB, Node.js, OctoPrint API

Organization

UTDesign Makerspace