Log in

Moderate and automate your Discord server

Your bot can check every message posted in your Discord server against rules you write in plain English, such as "No self-promotion" or "No job posts outside #jobs". It reports the messages that break a rule to a log channel, and can remove them.

It can also run automations: when something you describe happens, such as "a new member joins the server", the bot reacts, replies, or both. See Automate reactions and replies.

â„šī¸

Standard, Pro and Enterprise

Discord moderation and automations work with the Gateway transport of the Discord channel, which is included on the Standard, Pro and Enterprise plans.

Who can do this: team owners and admins.

Before you start

  • Your bot is connected to your server with the Gateway transport. See Add your bot to a Discord server.
  • Create a private log channel for moderators, for example #mod-log, and let the bot's role see it and send messages there.
  • To remove messages, the bot's role needs the Manage Messages permission, and Manage Threads to remove forum posts. Bots added to a server before moderation was available don't have these: give them to the bot's role in Server Settings > Roles, or click Add to Discord in the channel settings again.

Steps

  1. Open your bot, go to the Channels tab and open the Discord settings.
  2. Under Moderation, turn on Moderate messages.
  3. Choose what happens to a message that breaks a rule:
    • Log only: the bot reports it in the log channel and removes nothing. Start here.
    • Remove: the bot deletes messages it's confident break a rule, and reports them.
  4. Edit the Rules, one per line, up to 10. The first rule is filled in for you:
    No self-promotion: advertising yourself or your services, offering to work for hire (for example as a developer, designer or marketer), looking for work, or asking people to DM you about work.
    

    Say what isn't allowed, and where if it depends on the channel. For example: "No job posts outside #jobs" or "No links to other Discord servers".
  5. Choose the Log channel.
  6. Leave Tell the author by direct message when their message is removed on to let people know why their message went. Turn it off if you'd rather they didn't know.
  7. Click Save.

What the bot checks

  • Every new message in every channel and thread the bot can see, including the opening message of a forum post.
  • Not messages from the server owner, or from anyone with a role that has Administrator, Manage Server or Manage Messages. Your moderators are never checked.
  • Not messages from other bots, webhooks, or messages with no text (images only). Edited messages aren't checked again.

For each message, the bot works out how likely it is that the message breaks each rule:

How sureLog onlyRemove
85% or moreLogged as "Would remove"Removed and logged
50% to 85%Logged as "Flagged"Logged as "Flagged", not removed
Under 50%NothingNothing

Removing the opening message of a forum post removes the whole post. If the bot can't check a message, for example because a service is unavailable, it leaves the message alone.

How checks use message tokens

Every message the bot checks uses some of your team's message tokens, whether or not it breaks a rule. There's no separate charge: checks come out of the same monthly allowance as your bot's replies, on the Standard, Pro and Enterprise plans.

  • One check per message. The bot checks a message against all your rules and automations at once, so each message is counted once.
  • About 25 message tokens per check with the one rule that's filled in for you. More rules and automations make each check bigger: with 10 rules and 10 automations, it's about 200. A reply from your bot usually uses far more.
  • Messages the bot skips use nothing. That includes messages from moderators, other bots and webhooks, and messages with no text.
  • Busy servers check a lot of messages. For example, 20,000 messages a month at 25 tokens each is 500,000 message tokens. Checks count towards Message tokens this month on the bot's overview, along with its replies.

When your team runs out of message tokens, or the bot reaches its daily token limit:

  • The bot stops checking messages and running automations. Messages are left alone, not removed.
  • The Log channel gets a note saying checking is paused, at most once a day.
  • Checking starts again when your allowance resets on the 1st, or as soon as you add message tokens. A bot's daily limit resets at midnight UTC.

Automate reactions and replies

An automation says, in plain English, when the bot should act, and what it does: react with an emoji, reply, or both. For example, to welcome new members:

  1. Under Automations, click Add a welcome automation. It's filled in for you:
    • When: A new member joins the server
    • React with: 👋
    • Reply: Welcome them to the server by name, say hi, and briefly introduce yourself and what you can help with.
  2. Optionally choose In channels. Leave it empty for every channel. When someone joins, Discord posts its "joined the server" message in your server's system channel (set in Server Settings > Engagement), so that's the channel to choose for welcomes.
  3. Keep Reply in a new thread on the message on to keep the channel tidy, or turn it off to reply in the channel.
  4. To try it safely first, turn on Log only. The bot posts what it would have done to the Log channel instead of doing it.
  5. Click Save.

Click Add automation to write your own, such as "Someone asks how to install the app" with a reply like "Point them to the install guide and offer to help". You can have up to 10.

How automations work:

  • The bot checks each new message, and each member joining, against every automation for that channel, in the same check as your moderation rules. Automations work whether Moderate messages is on or off.
  • An automation runs when the bot is at least 80% sure its When happened. At most three run for one message.
  • The bot writes each reply itself from your instruction, using your bot's knowledge. Replies use your team's message tokens like any other answer. Reactions use nothing beyond the check that decided to run the automation.
  • When an automation replies in a new thread, the bot keeps answering there: the member can carry on the conversation without @mentioning it, as in a thread where it was @mentioned.
  • Automations don't run on messages in threads the bot is already answering in, so it never replies twice. Your moderation rules still check those messages.
  • Messages from moderators trigger automations too. A message that breaks one of your moderation rules doesn't.
  • Every automation that runs is reported to the Log channel, if one is chosen.
  • Joins only trigger automations if your server shows "joined" messages, which it does by default.

Check it works

  1. With Log only selected, post a message that breaks one of your rules from an account that isn't a moderator, for example "I'm a full-stack developer available for hire, DM me".
  2. Within a few seconds, the log channel should show a "Would remove" entry with the rule and how sure the bot was.
  3. Watch the log for a few days. When the entries look right, switch to Remove.

Troubleshooting

Nothing appears in the log channel

  • Check Moderate messages is on and a Log channel is chosen, then click Save.
  • Make sure the bot's role can see the log channel and send messages there.
  • The bot doesn't check messages from moderators, so test from an account without moderator permissions.
  • The Discord channel must use the Gateway transport, with Message Content Intent turned on in the Discord developer portal.
  • Check your team has message tokens left. When it runs out, checking pauses. See How checks use message tokens.

The log says moderation is paused

Your team has used its monthly message tokens, or this bot has reached its daily token limit. Until that changes, the bot doesn't check messages or run automations. Add message tokens, upgrade your plan, or raise the bot's daily token limit. Checking starts again on the next message.

The log says "Could not remove"

The bot's role doesn't have Manage Messages (or Manage Threads, for forum posts) in that channel. Give it the permission, then try again.

An automation doesn't run

  • Check the automation is On, has a When, and reacts or replies, then click Save.
  • If you chose channels, check the message was posted in one of them. For joins, choose your server's system channel.
  • Make the When describe what you expect more plainly, for example "A new member joins the server" rather than "welcome".
  • Check the Log channel: a Log only automation reports what it would do instead of doing it.

The bot flags normal messages

Make the rule more specific about what isn't allowed. For example, "No self-promotion" can catch someone mentioning their own project in a discussion; "No advertising your services or offering to work for hire" is narrower. Stay on Log only until the log looks right.

Last updated