2021 has been a troubling year for Discord bots, but despite this, I spent a big chunk of this year working on huge rewrites of my Discord bots. But that's not all…

Merely Framework

This year, Merely was transformed from a simple Discord bot, to the framework from which all of my bots could be built off of. The decision to do this was sparked by the growing annoyance that maintaining several independant Discord bots was starting to become apparent over the last few years.

Here are the tenets of the merely framework I built to make Discord bots easier;

Cogs

Commands in the merely framework must be part of a Cog. Cogs are groups of commands that share state and dependancies. Cogs can be enabled, disabled, and reloaded as changes are made to the codebase, enabling continuous development of my Discord bots with as little interruption as is feasibly possible. Cogs are also each separated into their own file to keep code short.

Data-driven design

Merelybot has removed any and all hardcoded strings, enabling an incredible amount of customization. Everything from the name of the bot, to the changelog, to the commands listed in the help command are all controled by a config file which can also be reloaded at any time.

Community translation

Merelybot has a translation system named Babel. It's an improved rewrite of the translation system of the same name from ConfessionBot. Babel allows translators to translate all branches of conditional sentences in one go, read from the config file, and control the syntactical layout of a programmable sentence. I hope to eventually build a visual editor for translations to help less technical users help with translations in future too.

Merely (the Discord bot) is now an example implementation of the framework. This brings translation support, better error handling, custom prefixes, premium bot features, and an experimental command-less operation mode called lightbulb to merely, and also makes maintenance much easier as the codebase is now shared with ConfessionBot.

WebFileManager

WebFileManager is a simple nojs file manager written in PHP. It's mostly a personal project built so I can share files online without having to deal with uploading files to the cloud (or having to pay to keep them there). It's especially useful for files that might be constantly changing, like a Minecraft world download.

There's not much for casual users to see of this project as this is a mostly private file server. If the source code makes any sense to you though, you're welcome to have a browse here. Curiously, the most fun I had with this project was actually designing sll the iconography in Inkscape. It's all puposely exported in SVG so I can have a php file (icongen.php) generate any combination of symbols that could represent a file or folder on the fly, and then return it as a simple SVG file.

Cookie Clicker

My simple cookie clicker clone got a lot of attention from one very dedicated user earlier this year. They started sending through bug reports and suggestions which I never expected would happen. I decided on a whim to entertain this and start improving this 5 year old game once again and made a lot of progress over the span of one month. I wrote about the whole adventure here.

Yiays.com

As is basically tradition at this point, Yiays.com witnessed another rewrite throughout the year. This time around I've tried to make a focused web design with straightforward navigation. Any user should be able to get to where they're going in 1 click - which you could not say about my 2020 design - Javascript is also completely optional (unless you want to author a blog post of course). If we're lucky, this year we can go without a rewrite and I can instead bring back support for comments.

You can read more about the yearly redesigns of my portfolio website here.

ConfessionBot 2.0

This rewrite has been in the works for a long time, partially because it's dependant on the Merely Framework, which was only finished this year. But it's almost here and it will bring a boatload of improvements; from improved translations to spam protections to premium features, 2.0 will mark the beginning of a transition towards a much easier to use bot. This will get its own blog post when it's ready.