Quote-Bot, the bot I call Son
Quote-Bot is a Discord bot I started many years ago, back in high-school. In the dark days before the official bot API. It was quite popular among my friends and people jokingly started calling it my son. So that’s what he is now.
The bot stores quotes that people enter into it and then replays them when they log on. It was inspired by an IRC bot that does the same thing that I saw on #anime. It is equal parts annoying, and funny.
Generally it was just a way to remember all the funny or interesting things that people say.
Quote-Bot is one of my few programming projects over the years to actually see some use, mostly among my ever-changing friend group.
The first version was in Python with discord.py. This worked fairly well for a while and was one of my earliest programming projects to actually be put into use so has a special place in my heart.
But overall this version had some problems, and eventually had to be redone.
Version 2: Bottier version
Also using Python with discord.py, but this time using the poorly documented, but good, bot api discord.py provided. This was a struggle for me due to the lack of documentaiton, but was a good learning experience.
This was one of my better iterations and was probably the most long lived one.
After learning and becoming enamoured the Rust programming language I embarked on a rewrite of Quote-Bot in Rust with the Serenity library. And I way over-engineered it. I’m not quite sure if I was hoping to release the bot publically or what I was thinking. But it ended up complicated with a database, log files, per-server and per-user settings, and more complex features.
In the end tech-debt and a few critical bugs drove me to abandon this version, and for a while Quote-Bot was no-more.
And now… Version 3!
But after learning Ruby (which you can read of that tale in another post) I decided that it was time to rescue my son from his exile.
This iteration is simpler than the previous few, storing data in flat CSV and with a much simpler codebase. But that just makes it all the better.
The code can be found on my Git server and the old revisions should be on branches or in the Git history.