---
title: "Moderate and automate your Discord server"
description: "Check every message in your Discord server against your rules, remove spam and self-promotion, and react or reply when things happen, like members joining."
canonical_url: "https://chatthing.ai/docs/channels/discord-moderation"
last_updated: "2026-11-12"
---

# Moderate and automate your Discord server

**Available on:** Standard, Pro, Enterprise plans.

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](https://chatthing.ai/docs/channels/discord-moderation#automate-reactions-and-replies).

> **Standard, Pro and Enterprise**
>
> Discord moderation and automations work with the **Gateway** transport of the [Discord channel](https://chatthing.ai/docs/channels/discord), which is included on the Standard, Pro and Enterprise plans.
>
> **Who can do this:** [team owners and admins](https://chatthing.ai/docs/account/teams#what-each-role-can-do).

## Before you start

- Your bot is connected to your server with the **Gateway** transport. See [Add your bot to a Discord server](https://chatthing.ai/docs/channels/discord).
- 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:
   ```text
   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 sure | **Log only** | **Remove** |
| --- | --- | --- |
| 85% or more | Logged as "Would remove" | Removed and logged |
| 50% to 85% | Logged as "Flagged" | Logged as "Flagged", not removed |
| Under 50% | Nothing | Nothing |

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](https://chatthing.ai/docs/account/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](https://chatthing.ai/docs/bot-settings/usage-limits):

- 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](https://chatthing.ai/docs/account/add-ons). 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](https://chatthing.ai/docs/channels/discord-moderation#how-checks-use-message-tokens) 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](https://chatthing.ai/docs/channels/discord-moderation#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](https://chatthing.ai/docs/account/add-ons), upgrade your plan, or raise the bot's [daily token limit](https://chatthing.ai/docs/bot-settings/usage-limits). 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.

## Related

- [Add your bot to a Discord server](https://chatthing.ai/docs/channels/discord): Connect your bot to Discord so it answers slash commands, @mentions, direct messages and help forum posts in your server, and moderates it by your rules.
- [Answer your Discord help forum and hand posts to your team](https://chatthing.ai/docs/channels/discord-help-forum): Have your bot answer every new post in a Discord help forum, and email your team the posts it can't solve, with the conversation and a link to the post.
- [Answer questions in your Slack or Discord community](https://chatthing.ai/docs/use-cases/community-bots): Set up a bot that answers member questions in your Discord server or Slack community from your docs, and summarises what's been discussed.
- [Message tokens and what happens when you run out](https://chatthing.ai/docs/account/message-tokens): What message tokens are, how each message is counted, how model multipliers work, when tokens reset, and what happens when your team runs out.
