Inspiration

This bot was inspired by an episode of the television show Community, where MeowMeowBeenz was an app that allowed users to rate each other, wrecking havoc on the main characters' relationships. We decided to give the concept a slightly different application: moderating Discord servers.

What it does

This bot allows users to rate other users (but not themselves, of course) on a scale of 1 to 5, 5 being the best. A user's score is an average of all scores that a user has received.

Users can view the score of others or view a leaderboard of everyone that has been rated.

If a user's score is below 1.5 and they have at least 10 ratings, then they are kicked from the server. If they return to the server, their score remains the same, but they are not eligible to be kicked again until they receive 10 more ratings.

How we built it

This is a standard Discord bot, built from the ground up in JavaScript utilizing the Eris library. The scores, as well as a history of all ratings, are saved utilizing a PostgreSQL database we created. Once the bot's base command structure was completed, we divided up our work and continued adding new features, such as the leaderboard and kicking functionality.

Challenges we ran into

Like with any project, we encountered several challenges throughout the process of building it.

We encountered some difficulty getting the bot's kick ability to work. Kicking a user requires more than simply their user ID, and some online guides we tried to follow appear to have been outdated, as they would return null values at key points in the process. Fortunately, we were able to make it work with some close examination of the Eris API, and users can be now removed quite easily.

We were also forced to scrap the ability to mute users. While this is a logical next step to appear before kicking or banning a user, the Discord API only allowed us to prevent them from utilizing voice channels out of the box.

Accomplishments that we're proud of

We managed to pull this project together not having extensive experience with JavaScript prior to the hackathon. We also felt that the scope of the project was about right -- we were able to finish it with a reasonable set of features in a weekend.

What we learned

This project gave us experience with JavaScript and SQL database management, as well as how to use the Discord API and Eris library.

What's next for MeowMeowBeenz

There are many more features that we can add to this bot. For example, we could use it to temporarily block a user from posting, fully ban a user, or send users automated score warnings.

Share this project:

Updates