GitHunt
3K

3kh0/r9k

Simple Slack bot to tune out noise and make conversations on Slack more high quality

r9k (ROBOT9000) on Slack

When social communities grow past a certain point (Dunbar’s Number?), they start to suck. Be they sororities or IRC channels, there’s a point where they get big enough that nobody knows everybody anymore. The community becomes overwhelmed with noise from various small cliques and floods of obnoxious people and the signal-to-noise ratio eventually drops to near-zero — no signal, just noise. This has happened to every channel I’ve been on that started small and slowly got big. - xkcd, 2008

TLDR if you don't want to read the whole thing

  • Every message in the monitored channel is normalized (lowercased, punctuation removed)
  • If the message has been said before, it's deleted and the user is warned
  • Repeat offenders get exponentially increasing mute times (2s → 8s → 32s → infinity and beyond)
  • Mute times decay by half every 6 hours

In theory, this should make it so that the channel stays clean and only the most creative and interesting messages are left. If it works in IRC, it should work in Slack too.

Cool shit about this

  • Only one channel is monitored (spin up more instances for more channels, this helps bypass rate limits too)
  • All messages are normalized (eg. "hello!" and "Hello?" are the same)
  • Stupid fast SQLite with Bun
  • Decaying mutes for uncreative people: 2 * 4^(violations-1)
  • Small
  • Only bottleneck being the sluggish Slack API

Get going

  1. Make a Slack app and:
    • Turn on Socket Mode
    • Make a app token with connections:write
    • Add these bot scopes: channels:history, channels:read, chat:write, im:write
    • Subscribe to message.channels event
  2. Copy .env.example to .env and fill it out
  3. Run bun start
  4. Invite the bot to your channel
  5. Profit???

Do note that since this bot leverages the admin API to silence nerds, you need an admin token to run it. Otherwise it will just yell at you and do nothing.

Languages

TypeScript95.6%Dockerfile4.4%

Contributors

Created January 22, 2026
Updated February 26, 2026