Due to the rising prevalence of covid-19 and need for online education because of it, we created a bot using discord that allows the classroom environment to be quickly and easily set up for any instructor, Discord Learn. Discord in itself is a middle ground platform between conferencing applications like zoom and teams, and learning management applications such as Canvas and Google classroom. With this, we can use discord to set up a learning environment that combines the best of both worlds and uses each feature to its fullest potential.
What it does
Discord Learn helps instructors begin and manage a classroom on their own Discord server while easily able to teach as effectively and quickly as they would in person. Starting the server is as easy as just entering in two commands and the bot will do it all for you! All the channels, the commands and even permissions are automatically set up by Discord Learn. When you want to schedule an event, let the bot know and it will remind the students a little ahead of time so no one’s late and even connect it to your own google account to access your own google calendar. If a student does arrive late, take attendance and the bot will let you know who that is. Don’t worry about the noise in the classroom, all students are automatically muted with the option to request a chance to speak up when they have a question. And keep your class engaged by setting up breakout rooms and polls for class participation. All of these tools and more are readily available to help create the learning environment teachers should expect.
How we built it
To build Discord Learn we took advantage of the many benefits that discord provides to developers looking to create bots. We use Python to write and run our discord bot using the discord.py package containing all necessary tools needed to create the bot. We used github to send and receive different files, and when the bot needed to be tested we ran the python script and debugged using the console. The discord.py api is fairly expansive and allows for coverage of almost every aspect of the platform so we used all those features to write as many useful commands as we could for Discord Learn.
Challenges we ran into
Some of the challenges our team ran into while working on Discord Learn were dealing with assigning roles after a member reacts, breakout rooms and a couple more. Reacting for roles was a challenge as it ended up involving a fairly complicated process of setting up and checking the members list once the message was reacted to. The breakout rooms as well ended up also being fairly complicated as students would have to be dragged out of the class, new voice calls with certain permissions would have to be made and the students couldn’t be allowed to access other breakout rooms
Accomplishments that we're proud of
Some of our greatest challenges were in turn our best successes, the breakout rooms and role reactions worked very well after working out all the bugs and we did some fairly complicated work to solve those problems. One other feature we’re proud to bring to Discord Learn was the ability to so easily create the whole server off of 2 commands, it was very effective and great for instructors that maybe weren’t too familiar with this technology. This as well as the google calendar integration were very well done features.
What we learned
Throughout this hackathon we learned a lot about developing in python, working with discord bots and general coding practice. The discord bot showed us that breaking down a problem into its smaller steps allowed us to solve the problem by stipulating on it. We also learned a lot about how to keep information safe and private when working on a project on a platform such as github, such as our bot token which ended up being a problem until we found a very easy solution in the gitignore. We learned how to spread out work better so that we would be more efficient and how to work as a more cohesive team in general.
What's next for Discord Learn
One improvement we can work is incorporating more embedded messages into the ones the bot is sending as embeddeds are able to carry more versatile information. Also more complex features such as a fleshed out system for assignment submission instead of just one text channel. On the topic of assignments, incorporating the Google Classroom API into the software to check on the completion and due dates for said assignments would be a future improvement we could work on. Aside from that, the fact that we use a voice channel in discord for class is extremely inefficient so when discord makes it so stages are able to share video we plan to incorporate that into our bot. Lastly, just an overall better moderation system for profanity would be the last feature we’d add to Discord Learn for a better student and teacher experience.