A Discord bot that manages all the user mails and roles.

What is it?

We have a student-only Discord server with almost all the students of my degree. There, we can meet up and work together. As this year (due to the pandemic) we aren't able to meet a lot, it has been a good alternative to know better each other.

The main issue that the server had, compared to other university-related things, was that anyone could join that server: no proof of student was asked, no verification... it wasn't a secured place were.

That's why I thought  it would be a good idea to make a Discord bot that could manage all the user verifications, and assign all the roles related to the degree year we are currently at, etc.

As we have a custom mail (@something.edu) in the university, if we make a bot that verifies that a Discord user has verified a valid mail (with that termination), we make sure that this person is a student, and can enter the server.

Actual situation

By the end of this year, I've managed to deploy the MVP (minimum valuable product) of this project. It can assign roles and can check and verify e-mails. And it is dumb-proof: every case scenario has been planned!

I am currently hosting the bot on a Raspberry Pi 4 sitting next to my router, so there is almost any cost with this bot (just a little bit of power). I have used the same Raspberry from the Node MCU project.

You can check the actual status of the source code by checking the github repository, where I commit every change that I make on the bot. And I have also made (a while ago) a YouTube video showcasing the MVP of the bot. The video is in Catalan as it was for some colleagues, but you can still check it here:

Future improvements

There is still a lot to do in this project, but I am proud of it because I finished the crucial part of the bot: checking if someone is a student or not.

For the moment I have planned only 2 future improvements:

  • Automatize the role-assign part: currently, once the student is verified, some buttons need to be clicked by the user in order to get the correct roles. If the university gave me some way of checking into their database for automatically assigning the respective roles all the student (without them clicking on which they want), the bot would be more efficient.
  • Manage all voice channels: if an user enters a subject-related voice channel with some colleagues, that voice channel becomes occupied. What if another group of students need to work on that same subject at the same time? In that case we would need to create a new voice channel, with the same permission settings, and when the voice channel becomes available again, we delete the cloned channel. This hard work can only be done by a bot, and that's why it's on my improvements list.
In this project I used...PythonDiscord.pyMVP finished byDecember 2020

More Projects