2 minute read

Welp. It’s finally here.

A few months ago I decided to rewrite (or, mostly rewrite) my Discord moderation bot, Vortex. It wasn’t so much that there was anything wrong with it, but rather it just was sub-par compared to the potential it had. Vortex was originally built to fit very specific needs; namely banning mass-mention spammers and deleting advertisements. However, it lacked a lot of features that were present in another bot of mine, Spectra, as well as plenty of other moderation bots. Its logs were minimal (only the bot’s actions and the bot’s command usage), and the moderation commands were simplistic as well. In short, while it fits the niche needs at the time, it was far from being a complete and standalone moderation tool.

Going into the rewrite, I had a clear goal: Vortex should be the only moderation bot a server needs. This meant adding a lot of features (including a lot of features that I had previously written or designed for other bots) such as message logs, reason-able moderation logs, server logs, custom prefix, and more forms of automatic moderation. My two years of Discord server moderation helped build a knowledge-base of what tools are useful, and what kinds of configuration are needed to be flexible for different servers.

One of the biggest hurdles in redesigning the automod was the punishment system. In the original bot, each form of automod (max-mentions, advertisement prevention, etc) had its own punishment. Unfortunately, this made things somewhat ugly on the backend (it took a lot more code to add a new feature) as well as meant the bot as a whole had a lack of cohesiveness. The solution that I decided on was a strike system: each form of automod would assign a configurable number of strikes, and punishments could be assigned to certain strike counts. For example, a server might decide on a “3 strikes you’re out” system, where 1 strike was simply the strike as a warning, 2 strikes was a kick, and 3 strikes was a ban. They might decide that posting advertisement constitutes 1 strike, whereas posting a referral link is 2 strikes. This example is just one of a huge number of possibilities that can be tailored to each individual server.

Yesterday, I completed the transition to move all of these new changes onto the old bot, and luckily, everything went smoothly: no major errors, and the old settings transformation was clean as well. There’s still more features I want to add, and a few minor (quality-of-life) things I want to fix here and there, but overall I think that it’s pretty solid! If you’re interested in checking out Vortex for yourself, you can take a look at the wiki here.