It’s my Discord bot! Currently written in Go 1.22 using discordgo 0.27.1. This one’s been though quite a journey…

Features

  • 14 MB memory footprint when idle
  • SQL database
  • Customizable slash command building system
  • Utility functions for interaction handling, including components and autocompletion
  • Upvote/downvote system for users
  • Archiving of messages and attachments
  • Reminder system
  • Clicker training (this was a commissioned feature)

History

So my friends and I wanted a bot that announced when people joined voice channels because they were terminally online. So I made that really quickly in discord.py, and they named it jlort jlort because they thought it was funny to have a Mini-Me announcing that. Then I got bored and started adding some more features. Like non-Youtube video playback (to supplement Rhythm) and quotes (since we didn’t yet have a quote bot). But it was something I just hosted on evenings and weekends with a free Heroku plan, which was soon replaced with an old laptop sitting in the corner of my closet.

Then Rhythm started having some bad days, and people complained about the audio quality, and I came up with new commands and little minigames for us to joke around with, so I kept improving the bot bit by bit. Features included FFmpeg subprocesses, audio seeking, Wikipedia integration, games of chance with stats, and the ability to spin up and ping game servers that I hosted on the same laptop.

Then the pandemic happened, and we were spending a lot more time using the bot’s features. That’s when I noticed a serious memory leak in the bot. How was I getting a memory leak in Python? Good question; I never figured it out. Whatever it was seemed to be a C interface, but that was as far as I could tell. So I decided to port the bot to Go instead because I heard it had a good library. Slight problem: I didn’t know Go, so I taught myself it in a few weeks.

This marked the release of jlort jlort 2, which was the initial version uploaded to GitHub. This version was quickly put to the test by the death of Rhythm and Groovy, which caused jlort jlort to become the de facto music bot for my friends and I, a position it holds to this day. I also tried to add a gacha system, but it never really made it out of testing due to a lack of items to roll for.

After resisting the push to go to slash commands for a bit because I thought it was too stateless, I decided to make the conversion by writing utility and builder functions that would make registering slash commands almost as easy as registering text ones with my old system. My system succeeded, and after adding components to some commands, I released jlort jlort 3.

Due to my work schedule, I began to have difficulty keeping the bot online using my own equipment. As a result, I moved the bot onto a free Oracle Cloud VM. Because of YouTube’s more aggressive bot detection, I also had to remove the music playing feature around this time. Thankfully, we weren’t using the music features anymore; it seems the age of music bots has long passed.

I currently have no plans to release new features, and am mainly focused on fixing bugs as my small userbase encounters them.

What about the clicker thing?

oh yeah that

uh

it was a commission from an artist friend of mine who wanted a bot to remind her to save her work since her breaker was unreliable

and she wanted the reminder to be in the form of a clicker noise

i stuck it in jlort jlort because i didn’t want to have to write a new bot + audio playing code

she’s a bit strange but $10 is $10