Rewrite Release Announcement
This is some information on the rewrite release, including why and how it happened

Mel
4 min read
August 22, 2022
Release Blog
[ Rewrite? REWRITE??? ]
Hey everyone, we’re very excited about what we’re releasing today. This is the culmination of years of planning, and months of writing code. We’ve put our sweat and tears into this rewrite, and we purposely developed it to last us years without needing this effort again.
CHANGELOG HERE: https://dankmemer.lol/community/blog/rewrite-changelog
You might be asking something like: “What is a rewrite? Why is there a rewrite?” and those are fantastic questions.
It’s been misunderstood that the “rewrite” is simply us moving to slash commands, but this is not the case. We’ve been planning this since before Discord launched slash commands, and we’ve had to REWRITE the rewrite to accommodate for the move to slash commands.
The rewrite is us taking our entire codebase and rewriting it to be almost entirely different. We changed from JavaScript to TypeScript, we moved databases from a defunct RethinkDB to PostgreSQL, we moved server hosts from Galaxy Gate to Google Cloud Platform, we moved from a gateway-based bot to an http-based bot, and we obviously moved from message content prefix-based commands to slash commands and components.
The rewrite is SUCH a different codebase that we didn’t even use the same GitHub repository, it's almost entirely different. If you’re a Minecraft fan, a good comparison would be Bedrock Edition to Java Edition. The content is largely the same (with some key differences) but the underlying technology is completely different.
The rewrite was, and is, necessary for the longevity of the bot and our users. If you’ve been with us for a few years, you’ve seen us go through major multiple-day downtimes, data wipes, dupes, and long nights with exhausted developers watching the codebase like a newborn baby that could stop breathing at any time.
We have been running on an outdated, hacked together, unstable infrastructure for the entirety of the bot’s life. At no point was the technology we used the “cutting edge” or even the “standard” for applications like ours. This was because this bot started as a project for us to LEARN programming, so naturally we would make mistakes and do things sub-optimally.
Well now we’ve got the developer experience to make something amazing, and we did. Our interactions library (slash commands) is in our experience, one of the most advanced in the entirety of the Discord ecosystem, hand crafted over months specifically to work well for bots at our scale. Our infrastructure is finally modernized into packages. No longer do we need to bring the entire bot down to fix lottery posting, because the lottery posting is contained within a package separate from the interactions (slash commands) codebase. This is the case for much of our bot, and it’s so great.
We developed everything with stability, expandability, and QUICK updates in mind. Things that would previously take over a month to develop ALONE (like having multiple pets!), we are able to finish in a week or less and get it out to be tested by our Alpha Testing team.
Because of all of this, you will start seeing lightning-fast updates coming in the future, no more waiting 3 months for a semi-big update that everyone wants. Part of how fast we can put these out is because of the move to slash commands.
[ Slash Commands ]
We’ll be up front with you. We know not everyone is a fan of slash commands, and mobile users have a bigger hurdle to use them than desktop users. Not only are we aware of this, but so is Discord. They’re actively developing better slash commands features and are regularly releasing updates to make them even better.
Why are we switching to slash commands if we know the experience is sub-par for some users? Well, we do genuinely believe in slash commands and the amazing features they bring. It’s more than just a prefix change, slash commands are the first step in making our bot truly interactive into your Discord experience. Buttons, forms, dropdowns, ephemeral messages, context menu commands, autocomplete are all some examples of things that slash commands bring to the table to expand on our bot experience, and you’ll quickly find in our rewrite we used these in awesome ways. (I suggest checking out our new /settings
command for an example)
In addition to that, Discord also is changing how message content is handled by bots. Because our bot doesn’t NEED message content to function, we (along with a vast majority of bots) have to move to slash commands. The only bots that will keep message content (which means seeing your messages that are sent and listening for their prefixes) are ones that need it, like moderation bots.
I personally do not see this as a negative, because there have been multiple instances of bots (now disabled) who did things with message content that was less than great. Selling data, spying on people without permission, etc. For the vast majority of bots, users no longer need to question if that would be going on, because those bots simply cannot see the messages they send anymore.
[ The Future ]
Now, we’ve put the work in. We’ve grinded out this rewrite and in the process made some great changes to both commands and QoL. We want to do more; we want to actively push out updates.
So, we are asking for your ideas to implement! We have a community page on our website (Dank Memer | Community) where users can post and upvote other ideas. To post you must have a discord account that is at least 3 months old!
With this launch we’ll almost certainly have a list of bugs to fix that weren’t found until we ran the bot at this scale, and once those are done Badosz and I will be straight on the grindstone of new features. We’re both genuinely excited, and even impatient, to get some new features out.