Yernemm


SnoBot

Snobot was a public Discord bot which at its peak, served over 700 Discord servers. It included some of these features:

  • /setupcleverbot -- Enables Cleverbot conversations in the current channel. (Admin only command)
  • /translate -- Translate a message between any two languages.
  • /trandom -- Translate a message between 10 random languages and back to English.
  • /lastfm -- Get user music listening data from last.fm
  • /ow -- Display a user's Overwatch playime statistics
  • /level -- Check your global and server exp and level.

One of the more popular features was fixing YouTube embeds, as at the time Discord had a bug with displaying YouTube videos. Snobot would automatically fix the embeds so that they would display properly.

It also featured a website panel with a "startpage". Essentially a web page designed to be your home page, with a search bar, time, and some useful web links. It has a discord login too, but it was only used for debugging/admin purposes on my end. I intended to eventually implement a full discord server management dashboard but never did.

Snobot was written in Node.js and used the Discord.js library. It was hosted on a DigitalOcean droplet and was online 24/7 for a while. It was in development from mid 2019 to late 2020, after which I lost interest in maintaining it. Discord's APIs go through many changes which requires a lot of work to keep up with, and I was not interested in doing that, especially for a free project that I mainly did for fun. Eventually, it quietly went offline and I never bothered to bring it back up.

During development, I also made and published two NPM packages to make the project more modular and easier to maintain.

SnoDB

SnoDB was a simple key-value database that I made to store user data. It wrapped around an SQL database and provided a simple interface to store and retrieve data. It was mainly used to store configuration data for individual servers. The nice thing about this system was that it would make tables and columns automatically if they didn't exist, so I didn't have to worry about setting up the database manually. This way, I could have a single function call for adding data to a table and it would automatically create the table if it didn't exist. Since it was a wrapper, it had the advantages of an SQL database, with a noSQL-like interface. Overall, it was pretty simple and didn't have many features, but it was enough for what I needed. It was published on NPM, but I don't think anyone ever used it.

SnoCord

SnoCord was a Discord bot framework that wrapped around Discord.js. At the time, Discord didn't have official support for commands. Bots needed to define their own prefixes and do their own command parsing and handling. SnoCord provided a simple way to define commands and their handlers. It also had a built-in help command that would list all the commands and their descriptions. It was also easy to add new commands, as all you needed to do was define a new command object and add it to the list of commands. It also featured per-server prefix configuration, a permission system to restrict certain commands to certain permissions, and a cooldown system to prevent spamming. It was a simple framework, but it was enough for what I needed. I used it for Snobot and it worked well. I ended up publishing it as an NPM package so that others could use it too, but just like SnoDB I don't think anyone ever did.

Links