With the shift to online learning these past few semesters due to the advent of COVID-19, the Department of Engineering decided to experiment with using Discord as a place to host lab information. The experiment has mostly been successful. However, it was not without its faults. In particular, the roles for different lab sections needed to be manually assigned by an administrator. To solve this issue, an existing Discord bot was introduced to assign roles to students. This solution is not perfect, however, as the bot is targeted for use by gamers and therefore has two major problems:
- The commands are unintuitive and would not let the user know what was wrong with their entered command, making lab role assignments hard for people new to Discord.
- The bot created a lot of spam, which caused channels to become cluttered with user commands and bot messages -- making content harder to find. There was an attempt to fix the spam by using a second bot to delete the messages, however this would delete user messages and further add to the bot command complexities.
We created Giraffe Time as proper solution to the above problems. Targeted towards education rather than gaming, Giraffe Time provides an intuitive set of commands and functions for handling roles, setting reminders, and clearing messages, all while being able to keep things tidy with options for automatic user command and bot message deletion.
What it does
The main goal of Giraffe Time is to provide functionality for students to self-assign class roles, and for professors to set reminders for different classes. This is a surface level of what the bot can do, all the functionality is documented at thanks-sam-for-all-your-hard.work.
How we built it
Giraffe Time was built using Python, Docker, DataStax, and Google Cloud. Python was used to program the logic and functionality of the bot. Docker was used to make deploying the app easy across any server platform via containers. DataStax was used as a database for the bot to store role information and scheduled reminders. Google Cloud was used to host our bot's Docker container.
Challenges we ran into
- When deploying the bot to google cloud, it was discovered that cassandra-driver, a library needed to interface with Python, would need to build from source. This was an issue as the google cloud VM we were using was limited to 1 cpu thread and about 650mb of memory, ultimately the VM eventually would stall while compiling Cassandra as the system would run out of resources. The solution for this was upgrading the machine to a higher power option during the building of the docker image, then downgrading the machine once the docker image was built with Cassandra compiled inside.
- Learning a new set of tools that we never used before; familiarizing ourselves with and applying the use of the Discord API, Docker, and DataStax Astra with the CQL query language to implement our vision.
- How to best represent the data in our database
Accomplishments that we're proud of
- Implementing the basic features that we set out to accomplish
- Having a new set of tools and experiences in our toolbelt from learning the languages, frameworks, platforms, cloud services, databases, APIs, or other technologies used to make Giraffe Time.
What we learned
- How to create interactive Discord bots!
- How to create and use Docker containers!
- How to use Cassandra (with DataStax Astra)!
What's next for Giraffe Time
- Improving the user experience with even more intuitive methods of interaction via a web gui and message reactions!
- Making the bot even slicker with fancy-schmancy embeds