The Struggles of Moderating Payphone

Payphone is getting big. Really big. Last time I checked, it was growing up to 150k users, being the second biggest calls bot after Yggdrasil. That comes with a lot of challenges, specially when moderating it.

Jun 12th, 2025 · 10 mins. to read

Payphone is a big bot. It started as a small project I had made because I didn’t like Yggdrasil and their model, so I decided I’d build my own. Luckily, Ygg went down right after I launched Payphone, so I got a lot of users really fast.

It’s been a year since I released Payphone, and we now have 150k users and a few hundred thousands of messages (even millions, I estimate) a day, which is a lot to moderate. To give you an idea, we get up to ~500 reports a day (and growing) at the time of writing this, and we’re only two moderators: Stasi and I.

Reporting’s History

When I first launched Payphone, I didn’t have a reporting system. I launched with the bare minimum because I was already getting burnt out from working on it for months lazily, and I didn’t want to spend more time on it. I had barely no users for the first few weeks, so I didn’t really need it either.

After some time, I started getting more users, and this became a problem when I didn’t have any banning nor reporting system in place. I added the famous p.report command, which allowed users to report whole conversations, and I’d have to read through the whole conversation to find who broke the rules and ban them. Think that some calls last hours and some are super spammy, so it was a crazy amount of work to do for the growing amount of reports I was getting. I got some people to help me out reading them all (this is when Stasi came in), but it was still way too much work even when we had around 10 people reading reports.

The first rewrite of Payphone didn’t change this system much—if at all—because the only change I made was that reports were no longer spammed in a #reports channel, but instead displayed in a paged modal when you did p.reports. It was still a lot of work, and it wasn’t sustainable.

The Current System

Finally, we moved to the current system, which is a lot more sustainable: reporting individual messages. It’s far from perfect:

  1. It only shows the message that was reported, not the context around it.
  2. The command is a message command, which means it’s hardly discoverable without help.

I had an idea to solve #1, which was to make the p.reports modal more interactive.

Payphone's Mock Report Modal
A mock report modal I made when trying out new concepts.

I’ll keep writing when I get some free time.


Written by Nyeki - Code is available at GitLab.