What is HAL? Why do we need it? - Week 1
Tags: node, typescript, discord
Published: 2023-07-24 15:11:33

---
title: What is HAL? Why do we need it? - Week 1
published: true
date: 2023-07-16 08:29:06 UTC
tags: nodejs, typescript, discord
canonical_url: https://matthewh.dev/what-is-hal-why-do-we-need-it-week-1
series: "HAL - Private Discord Bot"
---

# Background

Imagine you run a Discord server that has grown rapidly over the last 8 months from a couple of hundred members to almost 7 thousand members. There's a lot to manage and there's a lot of little things to do.

I had the honor of working beside my fellow admin Tori early on in the life of this Discord server. We spent countless hours together building channels, moderating, re-organizing, reviewing analytics, and making changes based on those analytics. However, we also had another job.

One of the cool things we get to do is work with multiple content creators in our space to manage and host events for them so all they have to do is join and create content. We build the infrastructure, handle signups, verification, setup, and more. We also host a collegiate team out of the same server for the owner of the Discord who happens to be the coach. The owner, Koby, is also running VOD reviews.

💡

A VOD review is when someone will take a replay of the game (if the game provides it) or a video of you playing and provide you tips or general coaching to help you improve. Koby, the owner/coach, does in-depth VOD reviews which go into great detail about tempo, positioning, and so much more.

As you can see, we do a few different things. Just so you can understand my challenge as an admin and developer, let me list out all the things our Discord server houses:

- Our general community (standard stuff such as general channels, etc)

- Our coaching community

- Koby's collegiate eSports team

- Koby's brand

- Event management (both for our community and for content creators)

- And we always experiment with more...

This is...a lot. I'm lucky to be working with absolutely AMAZING admins and we have an awesome moderation team. As admins we all have our roles, however, Tori and I usually have our hands in almost everything in some capacity.

# Our Solution Today

As with any large community, we have bad actors, thankfully they come in waves and our moderators catch them pretty quickly. We also leverage Discord's AutoMod functionality to help catch and prevent an abundance of problematic messages from occurring as well.

If our moderators aren't around our users can report via ModMail, a public Discord bot for opening support tickets with a Discord server's moderators for any reason.

We also leverage Mee6 for a multitude of things but sadly the bot is...dated. Discord moves pretty quickly, relatively, with some moderation features and bots like Mee6 (the one we use) don't keep up. Some issues we have

- Timeouts leverage roles that require permission setup and can easily be messed up

- It auto-adds the timeout role to **every** channel which breaks the automatic syncing of permissions (this has caused us many issues)

- Mee6 randomly enabled an AI feature that we didn't want

- The embedded message builder is limited

- Audit logging will miss critical things

- There's no way to add notes to users

- You can't view previous punishments (kicks, timeouts, etc)

- Infractions don't show the moderator who applied it

- It will randomly stop applying roles to users (auto-roles)

- Its ticketing system leaves a lot to be desired

- The Twitch live notifications were sometimes delayed by 15+ minutes (we use Streamcord now which is instant...there's no excuse)

- Its temporary voice channels broke one day leaving an absolute mess of channels for us to clean up

- And more across the modules they provide that I won't go into details about.

The more we, the entire team, use it the more we hate Mee6 and all its features. We even have the premium version too, which means we _should_ have the best of the best...we still dislike it a lot. Mee6 is probably the last bot I'd ever recommend these days to anyone.

It's time to move on though, I don't want to spend this entire time just talking bad about Mee6 (although I could). We need a system better suited to our needs, something we can make our own, something that leverages Discord's native features and builds on them (not attempting to replace them). Here comes HAL, a completely custom Discord bot built exclusively for Koby and his server.

# Looking Towards the Future with HAL

While I can't share everything we want to do with HAL I do want to share my experiences during the development of it.

We want to take every piece we hate about the systems that exist today and make them lightyears better. I, personally, want to make tools for our moderators that allow them to do their job with ease and make their day-to-day as easy as possible. That's the core goal behind HAL, make everyone's job that much easier.

## Previous Iterations

I've had two previous attempts at HAL. The first one was good, spent months on it. Mainly worked on event management functionality. It was, amazing. I learned so much. I took too long. I need to reset everything. There are other tools our team needs and it's not event management tools...it's moderation. So here I am, attempt number three. Starting from the ground up, but I'm taking a different approach and building web first and not a Discord bot. I know it seems weird and I know there will be challenges however I'm up for it.

# What's next?

Well, I've been looking at Redwood for building out the web side. Out of the box, it seems to have everything I need. I've never used it though so this will be a new skill to learn and I'm more than excited to go on this adventure. I'm also excited to share it with everyone.