Skip to main content

A new era is coming: Cakebot 2

ยท 3 min read
Reece Dunham
Team Lead

Hello all, Today I am extremely proud to announce that Cakebot is getting a full rewrite in TypeScript.

Who? What? When? Where? How? Why?#

One question at a time please! I'll try my best to answer all these questions in this post, as well as provide migration advice, and more.

Why?#

The primary reasoning behind this decision is that Python is becoming unsustainable for this project. It doesn't have strict enough typing, the static analysis we can perform isn't very revealing, and the ecosystem is small and difficult to use. It has become a burden to maintain, test, and add features to the bot in its current state.

What?#

We are migrating from Python to TypeScript, which will allow us to utilize all of the benefits it brings, including:

  1. Much stricter typing (hence the name)
  2. The JavaScript ecosystem, which has a lot, and I mean a lot more packages then the Python ecosystem does (see npm)
  3. Allowing us to redesign the bot in a way that is modular, and extensible

Yes, you heard me right, Cakebot 2 will support contributing your own custom commands through an extension system!

Who?#

What do you want me to say for this?? I guess everyone, since everyone will benefit ๐Ÿ˜Ž

Where?#

All the work is being done on our GitHub page, as per usual.

How?#

Using a new tech stack, all of which can now be found in the repository.

discord.js and friends are being used now instead of discord.py.


Migration

Since we are now putting all code in the main repository, CloudRepo is no longer needed.

We plan to keep the CloudRepo up until 2022-06-01.

Some repositories may be moved to the GitLab group for archival purposes.

The official bot instance will move on to the rewrite the day after it is released. Update as of 1-31-2021: the official instance was migrated some time back, and everything is working smoothly. You can also now see how to set up the bot for self hosting in the documentation.

Final Words

(Plus the last question):

When?#

We plan to have this release done by the end of Janurary, assuming something terrible happens and we lose weeks of time. That is unlikely though, so hopefully only a week or 2. Update as of 1-31-2021: the update is ready and out.

Its 2021

Lastly, happy 2021! Hopefully it will be better then 2020. ๐Ÿ˜ช