Ricardo Tavares

January 1, 2023

Community home-made automations for Discord

Niche communities have an upside to being niche: you can (and maybe should) explore options that don't need to scale very much. My own experience with organizing people around a small hobby has revolved around tabletop role-playing games (TTRPGs) in my country and city. If you never heard of TTRPGs, all you need to know is that they're the tabletop predecessor of computer RPGs, you can play them face-to-face but also online. For this hobby, the most recent community initiative I've been involved in is a Discord server which grew unexpectedly when COVID-19 hit. But even before that spike, we were already happy with our little server and its role in promoting TTRPGs in Portugal. In particular, this article is not about how we tailored our community to make the best use out of Discord, but the other way around. How we built specific automations to make Discord work the way we want it to.

community.jpg


I've already talked in a previous article about my first experience with making a bot, which then was built for Slack. What I've learned from that project is how you should open your options to whatever the bot may be aware of and then leverage the API to iterate on useful features. Basically, you'll probably not get your user experience right the first time, so you need to be open to different solutions for the same problem. Some things are easy like rolling dice for games, which is the most obvious feature of having a bot in a TTRPG server. Other things are harder to pin down, like how to onboard new people into the community, how to manage having many different channels or how to handle spam from account takeovers.

Traffic in our RPG Portugal Discord server is small enough for every person to be welcomed and guided by one of the moderators. That personal touch is key as this community isn't particularly interested in lurkers, we're looking for people that engage with playing RPGs. These games are very conversational, so we've no problems with requiring some basic level of human empathy for people that stay in our server. Furthermore, a niche hobby like that of tabletop RPGs is easily misidentified and people may stumble upon the server by mistake. No, it's not for Grand Theft Auto nor Warcraft nor boardgames. Onboarding is therefore an essential part of our moderation and, without the help of automation, it can become too much of a burden. Finally, much like other similar communities, tabletop role-players are very heterogeneous which makes moderating them, particularly like herding cats.

By default, Discord doesn't help very much with these challenges and it was even worse years ago when RPG Portugal started. Everyone could invite new members from anywhere and those people could read and write in too many channels, forcing moderators to try and find where that person was typing. So we created a specific user role for new people which at the time was the best way to manage permissions and even apply timeouts (instead of having to always escalate towards kicks or bans). That idea had to be automated so mods wouldn't have to assign this role by hand. And instead of having to chase down some combination of public bots that could maybe solve our problems, I was already developing and hosting our own bot. Onboarding was the priority and, since dice rolling is relatively easy, I also included it right from the start to get the buy-in from the community while I worked out the kinks on the harder stuff.

I also considered that another important side of the onboarding experience would be having a domain and website, something easy to say if you'd like to let people know about our server in a meet-up. So I built a landing page and a micro-service to feed it the invite code. In practice, this would become the only way to enter our server. Even if invite codes are ultimately public information, the convenient way for everyone is to simply visit rpgportugal.com, check our rules, and click the big button. The invite code was initially created and put into the service by hand, but now our bot does this as well. Nobody creates any invites in our server, including the mods. We want every new member to come through the same funnel so they get every chance to not come into our server by mistake.

Another challenge was how to help our members deal with a growing variety of channels. Most roleplayers niche deeper into an already niche hobby and therefore want to see channels for their particular games and not so much for others. By default, Discord has kind of an opt-out option where you can mute any channel that doesn't interest you, but we wanted an opt-in feature. Therefore, we now maintain a list of channels that people won't see unless they give a bot a command to apply a specific role to them that identifies their interest in that specific RPG. Moderators can also do this by hand, of course, but the real value is in members themselves controlling what channels fill their side menu.

Years going by also brought us other challenges, namely all kinds of spammers with tactics that keep evolving, but with time our community also grew to a point where other people are also involved in developing solutions for our particular needs. You can check out all kinds of projects on RPG Portugal's GitHub. One of them includes our homemade attempt to deal with spammers: a bot that watches for a honeypot channel where everyone is warned not to post, lest they get removed from the server. Again, all to remove stress from moderation while improving our own Discord experience for everyone.

For a platform that is supported by its own users, Discord is kind of absent in its relationship with its customers. You can be paying for Nitro, be offering your time moderating a community and still have no distinct way to communicate with Discord, get support and give feedback. Therefore, you're kind of forced to leverage whatever tools you have, including their API for developers. Discord basically has two poles of engagement, hyper-branded communication, and quick-wins product development. Both are superficial and short-sighted, which can make communities worry about their future.

But the platform happens to present an opportunity for servers that have members learning how to code or experienced developers who want to solve issues that can quickly have a lot of positive impact. Building Discord bots is similar to the low-hanging fruit of making a website (even if hosting is not so accessible). And it doesn't matter if you still know little about coding as long as you're well aware of your unique problems and therefore are motivated and in a good position to iterate on them. If you're just starting, I can recommend DiscordJS as a bot framework with good documentation for complete beginners. And eventually this DIY attitude can even enable small communities to keep an eye on self-hosted alternatives to Discord like Matrix chat. There's a lot that small communities can do to stay active and resilient through the internet.

(Originally written on August 5, 2022)

About Ricardo Tavares

Creates things with computers to understand what problems they can solve. Passionate for an open web that anyone can contribute to. Works in domains where content is king and assumptions are validated quickly.

Mastodon  |  Twitter  |  GitHub


View From the Web