# Moderation Master Tutorial

{% hint style="info" %}
**This configuration takes place in the** <mark style="color:green;">**`/configuration/moderation.json`**</mark> **file!**
{% endhint %}

{% hint style="warning" %}
**You might need Discord Developer Mode on to get ID's and such!**
{% endhint %}

{% hint style="success" %}
**Key words:**

<mark style="color:yellow;">**`Boolean:`**</mark> A <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark> switch

<mark style="color:yellow;">**`String:`**</mark> An assortment of <mark style="color:green;">**`"text"`**</mark> or <mark style="color:green;">**`"numbers"`**</mark> like this

<mark style="color:yellow;">**`Numbers:`**</mark> Just numbers!

<mark style="color:yellow;">**`Array:`**</mark> Strings or Numbers<mark style="color:green;">**`["in", "a", "pattern", "like", "this"]`**</mark>
{% endhint %}

## <mark style="color:blue;">Welcome!</mark>

Here we'll go over the Moderation setup in its entirety, with brief (or not so brief!) explanations and descriptions on things.

I made sure to separate everything the best possible so that the sidebar has a quick reference to what you're looking for.

### <mark style="color:green;">Feedback is welcome!</mark>

If you think something is missing, or needs a bit more work, then make sure to leave us a note at [our support server!](https://discord.iynxdev.com/)

***

## <mark style="color:blue;">Basic Configuration Tutorial</mark>

### <mark style="color:yellow;">"punishment \_whitelist"</mark>

#### <mark style="color:orange;">This configuration option accepts one role id. Every user who owns either the configured role or one above in the Discord role hierarchy cannot get punished using any moderation commands. We suggest to set this configuration option to the lowest staff role ID on your servers so that all staff members are protected from moderation commands (String)</mark>

<mark style="color:purple;">**Default:**</mark> <mark style="color:red;">'804354024048427009',</mark>

A <mark style="color:green;">**`String`**</mark> statement, this is the thing that prevents your moderators themselves from being punished by Athena. Anyone with this role or higher is immune from moderation actions.

You ***theoretically*** could leave it blank, but we <mark style="color:red;">don't recommend it</mark>. It could break things.

<mark style="color:blue;">**Example:**</mark>

<mark style="color:blue;">**We have a Owner role with ID 11111, Senior Staff role at ID 22222, Staff role at 33333, and a member role at ID 44444**</mark>

<mark style="color:green;">**`"punishment_whitelist": 33333`**</mark> causes any roles including itself and higher to be *<mark style="color:purple;">**immune**</mark>* from moderation actions, while keeping the member role *<mark style="color:purple;">**vulnerable**</mark>* to moderation actions.

### <mark style="color:yellow;">"lock\_roles"</mark>

#### <mark style="color:orange;">List of role ids who get their access to write denied in every channel once it has been locked using /lock (Array)</mark>

<mark style="color:purple;">**Default:**</mark> <mark style="color:red;">\[ "884573835205148692", "804354028419022888" ],</mark>

An <mark style="color:green;">**`Array`**</mark> statement, this controls what roles get their writing privileges revoked in the server when using <mark style="color:green;">**`/lock`**</mark>, with it functioning like a pseudo-mute role. With it being an <mark style="color:green;">**`Array`**</mark>, you can set up multiple roles to do the job simultaneously.

You ***could*** leave it blank and not have an issue typically, but we <mark style="color:yellow;">recommend being cautious</mark>. It can vary by plugin, and some plugins might require at least *something* entered in. If it breaks or stops working, just fill it in and you'll be okay.

<mark style="color:blue;">**Example:**</mark>

<mark style="color:blue;">**We have a Owner role with ID 11111, Senior Staff role at ID 22222, Staff role at 33333, Member role at ID 44444, Locked role at 55555, and New Member Role at 66666.**</mark>

<mark style="color:green;">**`"punishment_whitelist": 55555`**</mark> causes the Locked role to be *<mark style="color:purple;">**assigned as a write-denied role when using /lock**</mark>*<mark style="color:purple;">,</mark> leaving the rest intact.

***

## <mark style="color:blue;">Global Punishments</mark>

Global Punishments are a new feature in Athena! This allows you to submit a ban across multiple servers when you attach a *proof* image, giving the ability to other server staff to ban them according to your proof! *<mark style="color:purple;">**Without proof, bans are done just locally!**</mark>*

### <mark style="color:yellow;">"send\_data"</mark>

#### <mark style="color:orange;">If set to true, all bans that include a valid proof image will be submitted to Iynx Development. This data is shared across all AthenaBot instances, allowing other customers to ban the user on their servers based on your proof. If no proof image is provided, the ban data is not submitted. (Boolean)</mark>

<mark style="color:purple;">**Default:**</mark> <mark style="color:red;">true,</mark>

A simple <mark style="color:green;">**`Boolean`**</mark> statement, this lets you choose if you want to send ban information to the API regarding bans.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

<mark style="color:blue;">**Usage:**</mark>

On <mark style="color:green;">**`false`**</mark>, the bans *<mark style="color:purple;">**never send**</mark>*, meaning all bans with proof are just at local-level.

On <mark style="color:green;">**`true`**</mark>, the bans are *<mark style="color:purple;">**sent to Iynx Development**</mark>*, meaning others globally can see the ban.

### <mark style="color:yellow;">"receive"</mark>

#### <mark style="color:orange;">If set to true, all global ban requests will be sent to a configured channel, including all important information such as name, reason, and proof. Your moderators can then decide whether they want to ban the user on your Discord server or not. (Boolean)</mark>

<mark style="color:purple;">**Default:**</mark> <mark style="color:red;">true,</mark>

A simple <mark style="color:green;">**`Boolean`**</mark> statement, this lets you choose if you want to receive ban information from the API regarding bans.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

<mark style="color:blue;">**Usage:**</mark>

On <mark style="color:green;">**`false`**</mark>, the bans *<mark style="color:purple;">**are never received**</mark>*, meaning you won't get any bans from external sources in your server.

On <mark style="color:green;">**`true`**</mark>, the bans *<mark style="color:purple;">**are received**</mark>*, and are posted in the appropriate set-up channel, allowing interaction from other server members.

***

## <mark style="color:blue;">Mute Role</mark>

Mute roles can be applied to people instead of relying on Discord's Timeout feature if you want! This can help deal with how Discord Timeouts affect people's usage of buttons, dropdowns, etc.

<details>

<summary><strong>Role Based Mute Config Snippet</strong></summary>

```json5
        // This option is used to configure how you would like the mute function to
        // work. If set to true a "mute" role will be applied instead of the user
        // being timeouted with Discord's built in feature. Applying a mute role
        // can be useful due to timeouted users no longer being able to use any
        // interaction buttons/dropdown menus. This means they wouldn't be able
        // to create a ticket to appeal their punishment.
        // Note: If you enable role based mutes you must create a mute role and
        // change their permission in the Discord channel settings so they cannot
        // write anymore. The bot does only apply the role nothing else!
        role_based_mute: {
            // Whether you would like to enable role based mutes (Boolean)
            enabled: false,
            // Mute role ID (String)
            role_id: "804354031388196894",
        },
```

</details>

<mark style="color:blue;">**Usage:**</mark>

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, the role based mute system is *<mark style="color:purple;">**disabled entirely**</mark>*.

On <mark style="color:green;">**`true`**</mark>, Athena will *<mark style="color:purple;">**activate**</mark>* the role based mute, *however*, Athena will *only* apply the role, it does **not** configure the role to do it's job of muting people. That part is up to the user (you!) to configure in the roles/channels *manually*.

The <mark style="color:green;">**`role_id`**</mark> is what it says it is, the ID for the role that is being made into the mute role. Note, it is **not** an <mark style="color:green;">**`Array`**</mark>, it takes a single role *only.*

***

## <mark style="color:blue;">Auto Punishments</mark>

Another Athena feature, this allows Athena to automatically punish users based on how many warnings they have accumulated. There's complete freedom on how many warnings someone needs, what their automatic punishments may be, and if their punishments reset over time or not.

<details>

<summary><strong>Punishment Format Snippet</strong></summary>

```json5
            //  {
            //      violations: 3, 
            //      type: "MUTE",
            //      duration: "1d",
            //      reset: false,
            //  },
```

</details>

* <mark style="color:red;">**Violations:**</mark> represents the number of warnings the user must get in order for this punishment to be applied.

For example, if you want someone to be punished with a mute that lasts for a day after 3 warnings, you would configure it like this.

*<mark style="color:purple;">**(This would mute someone after 3 violations, for 1 day, and not reset their violations.)**</mark>*

<details>

<summary><strong>Violations Config Example</strong></summary>

```json5
            //  {
            //      violations: 3, 
            //      type: "MUTE",
            //      duration: "1d",
            //      reset: false,
            //  },
```

</details>

* <mark style="color:red;">**Type:**</mark> represents the punishment type. It can be either <mark style="color:green;">**`MUTE`**</mark>, <mark style="color:green;">**`KICK`**</mark>, or <mark style="color:green;">**`BAN`**</mark>.

Let's say a user's been persistently breaking the rules, and they've had a handful of warnings already, and let's assume you wanted to permanently ban them after 5 warnings, you'd configure it like this.

*<mark style="color:purple;">**(This would ban someone after 5 violations, for 1 day, but not reset their violations.)**</mark>*

<details>

<summary><strong>Type Config Example</strong></summary>

```json5
            //  {
            //      violations: 5, 
            //      type: "BAN",
            //      duration: "1d",
            //      reset: false,
            //  },
```

</details>

* <mark style="color:red;">**Duration:**</mark> represents the length of the punishment.

Let's say you have a user that has been banned prior, so they've kept their log of warnings in the database. If you wanted to mute them for even longer than the first time they got muted, you can easily change the duration.

*<mark style="color:purple;">**(This would mute someone after 10 violations, for 7 days, but not reset their violations.)**</mark>*

<details>

<summary><strong>Duration Config Example</strong></summary>

```json5
            //  {
            //      violations: 10, 
            //      type: "MUTE",
            //      duration: "7d",
            //      reset: false,
            //  },
```

</details>

* <mark style="color:red;">**Reset:**</mark> represents whether after this punishment was applied the violation count should be reset to 0.

Let's assume you're super forgiving to people, and you had someone temp banned from your server for a week, but you also didn't want them to keep a record on themselves after rejoining, you can configure Athena to reset their violation count after a certain threshold.

*<mark style="color:purple;">**(This would ban someone on the 15th violation, for 7 days, but also reset their violation counter.)**</mark>*

<details>

<summary><strong>Reset Config Example</strong></summary>

```json5
            //  {
            //      violations: 15, 
            //      type: "BAN",
            //      duration: "7d",
            //      reset: true,
            //  },
```

</details>

The best part is, you can make a sliding scale this way, AKA you can have multiple automatic punishments set up in a row simply by adjusting the config like so:

<details>

<summary><strong>Multiple Auto Punishment Config Example</strong></summary>

```json5
        punishments: [
            {
                violations: 1,
                type: "MUTE",
                duration: "3h",
                reset: false,
            },
            {
                violations: 3,
                type: "MUTE",
                duration: "1d",
                reset: false,
            },
            {
                violations: 5,
                type: "MUTE",
                duration: 0,
                reset: true,
            },
        ]
    },
```

</details>

***

## <mark style="color:blue;">Punishment Auto DM</mark>

Now you don't have to exactly tell people you punished them, you can just let Athena take care of it for you! Athena can automatically send a DM to whoever it is got punished by it, with the punishment description, length, and type!

<details>

<summary><strong>Punishment Notification Config Snippet</strong></summary>

```json5
    // If set to true every time a member is being punished the member
    // will be dmed by the bot telling them that they have been punished,
    // how and the reason (Boolean)
    punishment_notification: true,
```

</details>

<mark style="color:blue;">**Usage:**</mark>

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, Athena *<mark style="color:purple;">**will not message users**</mark>*.

On <mark style="color:green;">**`true`**</mark>, Athena *<mark style="color:purple;">**will message users automatically with punishment details**</mark>*.

***

## <mark style="color:blue;">Automod Basics</mark>

Automod is arguably the **biggest** thing to configure here! With multiple settings, there's a lot of things to customize here. I'll go over it as much as possible.

### <mark style="color:yellow;">Enabling it</mark>

Pretty simple, this toggles whether it's on or off.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, *<mark style="color:purple;">**Automod will be off**</mark>*.

On <mark style="color:green;">**`true`**</mark>, *<mark style="color:purple;">**Automod will be on**</mark>*.

<details>

<summary><strong>Automod Enabled Config Snippet</strong></summary>

```json5
        // Whether this module should be enabled (Boolean)
        enabled: true,
```

</details>

### <mark style="color:yellow;">Role Whitelisting</mark>

This configures what roles should be immune to the Automod. It is *hierarchical*, meaning the role *itself and higher* are *<mark style="color:purple;">**immune**</mark>* to Automod. It's an <mark style="color:green;">**`Array`**</mark> statement, so...

You ***theoretically*** could leave it blank, but we <mark style="color:red;">don't recommend it</mark>. It could break things.

<details>

<summary><strong>Automod Role Whitelisting Config Snippet</strong></summary>

```json5
        // Configuration option "role_whitelist" requires a role id.
        // If the message author owns the configured role or one above
        // in the Discord role hierarchy the message is whitelisted 
        // from any automod rules (String)
        role_whitelist: "884573835205148692",
```

</details>

### <mark style="color:yellow;">Ticket Whitelisting</mark>

This configures whether tickets are ignored from Automod.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, *<mark style="color:purple;">**tickets will be subjected to Automod rules**</mark>*.

On <mark style="color:green;">**`true`**</mark>, *<mark style="color:purple;">**tickets will be ignored by Automod**</mark>*.

<details>

<summary><strong>Automod Ticket Whitelisting Config Snippet</strong></summary>

```json5
        // If set to true all messages sent in tickets are whitelisted
        // from any automod rules (Boolean)
        whitelist_ticket_channels: true,
```

</details>

### <mark style="color:yellow;">Channel Whitelisting</mark>

If you're not a fan of certain channels having Automod, don't worry, you can assign them with this section. This will effectively make Athena ignore them.

This is an <mark style="color:green;">**`Array`**</mark> and an optional feature, so you could leave this blank with just <mark style="color:green;">**`[ "" ]`**</mark> and you'll be okay.

<details>

<summary><strong>Automod Channel Whitelisting Config Snippet</strong></summary>

```json5
        // Configuration option "whitelisted_channels" requires a list
        // of channel ids. Every message that is being sent in one of
        // these channels is whitelisted from any automod rules (Array)
        whitelisted_channels: ["804354119523500082", "947577986939514881"],
```

</details>

### <mark style="color:yellow;">Category Whitelisting</mark>

The more powerful form of Channel Whitelisting, Category Whitelisting excludes any channels inside that category!

Same as above, this is an Array and an optional feature, so you could also leave it blank the same way like the other one.

<details>

<summary><strong>Automod Category Whitelisting Config Snippet</strong></summary>

```json5
            // Configuration option "whitelisted_categories" requires a list
            // of category ids. Every message that is being sent in one of
            // the channels within these categories is whitelisted from any
            // automod rules (Array)
            whitelisted_categories: ["804354054829506590"],
```

</details>

***

## <mark style="color:blue;">Automod Rules</mark>

Here is where we get into the details that drives Automod and how it functions on a deeper level, things could get a bit complicated here, or maybe not!

### <mark style="color:yellow;">Regex</mark>

Personally, regex is out of my depth, but there's lots of resources online to make rules for regex than I could ever explain in any degree here! But what I *do* know is that you can configure Athena to pick up on certain phrases or words or even links and IPs! There's multiple things to this category and we'll go over them a bit.

This is what the initial configuration looks like for a regex rule:

<details>

<summary><strong>Automod Regex Config Snippet</strong></summary>

```json5
            // {
            //      name: "",
            //      regex: "",
            //      warn: false,
            // },
```

</details>

#### <mark style="color:orange;">Small breakdown:</mark>

* <mark style="color:red;">**Name:**</mark> Represents the name of the rule. Can be changed to whatever you want, because this is what reflects on the Automod log as the reason for the punishment.
* <mark style="color:red;">**Regex:**</mark> Represents what the Automod filter would be looking for. Basically, if you set a simple word as the regex, it would look for anything that matches that word, unless you went a little more in detail and set up wildcards, expressions, etc.
* <mark style="color:red;">**Warn:**</mark> Represents whether the Automod will warn someone for the message that was caught. This is a toggleable option, which means you're able to set it to <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark> to warn or simply delete and log respectively.

For example: If you wanted to warn someone for saying the word potato, you'd set it up like this:

<details>

<summary><strong>Automod Regex Config Example</strong></summary>

```json5
         {
              name: "Random",
              regex: "potato",
              warn: true,
         },
```

</details>

### <mark style="color:yellow;">Mentions</mark>

As simple as it can get, a spam mention warn system.

This is what the initial configuration looks like for this rule:

<details>

<summary><strong>Automod Mentions Config Snippet</strong></summary>

```json5
            custom_rules: {
                // The "mentions" filter deletes messages based on the amount
                // of mentions it includes.
                mentions: {
                    // Whether this automod rule should be enabled (Boolean)
                    enabled: true,
                    // "name" represents the name of the rule. It is a random name
                    // that will be used for warn reasons and in the automod delete
                    // message (String)
                    name: "Mention Filter",
                    // How many mentions are allowed per message (Number)
                    max_mentions: 3,
                    // Should the bot issue a warning if this automod rule
                    // has filtered a message (Boolean)
                    warn: true,
                },
```

</details>

#### <mark style="color:orange;">Enabling it</mark>

Pretty simple, this toggles whether it's on or off.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, *<mark style="color:purple;">**Mention spam filtering will be off**</mark>*.

On <mark style="color:green;">**`true`**</mark>, *<mark style="color:purple;">**Mention spam filtering will be on**</mark>*.

#### <mark style="color:orange;">Small breakdown:</mark>

* <mark style="color:red;">**Name:**</mark> Represents the name of the rule. Can be changed to whatever you want, because this is what reflects on the Automod log as the reason for the punishment.
* <mark style="color:red;">**Max Mentions:**</mark> Represents how many mentions one person can do in a message before getting warned.
* <mark style="color:red;">**Warn:**</mark> Represents whether the Automod will warn someone for the message that was caught. This is a toggleable option, which means you're able to set it to <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark> to warn or simply delete and log respectively.

For example: If you wanted to warn someone for sending 5 mentions, you'd set it up like this:

<details>

<summary><strong>Automod Mentions Config Example</strong></summary>

```json5
            mentions: {
                // Whether this automod rule should be enabled (Boolean)
                enabled: true,
                // "name" represents the name of the rule. It is a random name
                // that will be used for warn reasons and in the automod delete
                // message (String)
                name: "Mention Filter",
                // How many mentions are allowed per message (Number)
                max_mentions: 5,
                // Should the bot issue a warning if this automod rule
                // has filtered a message (Boolean)
                warn: true,
            },
```

</details>

### <mark style="color:yellow;">Repeating Messages</mark>

Another simple section, this handles spam messages.

This is what the initial configuration looks like for this rule:

<details>

<summary><strong>Automod Repeat Messages Config Snippet</strong></summary>

```json5
            repeating_message: {
                // Whether this automod rule should be enabled (Boolean)
                enabled: true,
                // "name" represents the name of the rule. It is a random name
                // that will be used for warn reasons and in the automod delete
                // message (String)
                name: "Repeating Message Filter",
                // How many times can a user post the same message until the
                // automod takes action (Number)
                max_message_repeat: 4,
                // Should the bot issue a warning if this automod rule
                // has filtered a message (Boolean)
                warn: true,
            },
```

</details>

#### <mark style="color:orange;">Enabling it</mark>

Pretty simple, this toggles whether it's on or off.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, *<mark style="color:purple;">**Repeat Message filtering will be off**</mark>*.

On <mark style="color:green;">**`true`**</mark>, *<mark style="color:purple;">**Repeat Message filtering will be on**</mark>*.

#### <mark style="color:orange;">Small breakdown:</mark>

* <mark style="color:red;">**Name:**</mark> Represents the name of the rule. Can be changed to whatever you want, because this is what reflects on the Automod log as the reason for the punishment.
* <mark style="color:red;">**Max Message Repeat:**</mark> Represents how many times a message can be repeated before being deleted and warn logged.
* <mark style="color:red;">**Warn:**</mark> Represents whether the Automod will warn someone for the message that was caught. This is a toggleable option, which means you're able to set it to <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark> to warn or simply delete and log respectively.

For example: If you wanted to warn someone for sending 5 same messages in a row, you'd set it up like this:

<details>

<summary><strong>Automod Repeat Messages Config Example</strong></summary>

```json5
            repeating_message: {
                // Whether this automod rule should be enabled (Boolean)
                enabled: true,
                // "name" represents the name of the rule. It is a random name
                // that will be used for warn reasons and in the automod delete
                // message (String)
                name: "Repeating Message Filter",
                // How many times can a user post the same message until the
                // automod takes action (Number)
                max_message_repeat: 5,
                // Should the bot issue a warning if this automod rule
                // has filtered a message (Boolean)
                warn: true,
            },
```

</details>

### <mark style="color:yellow;">Blacklisted Words</mark>

Final section! Another simple one thankfully! This just looks for words that you don't want said in your server.

This is what the initial configuration looks like for this rule:

<details>

<summary><strong>Automod Blacklisted Words Config Snippet</strong></summary>

```json5
            blacklisted_words: {
                // Whether this automod rule should be enabled (Boolean)
                enabled: true,
                // "name" represents the name of the rule. It is a random name
                // that will be used for warn reasons and in the automod delete
                // message (String)
                name: "Blacklisted Words Filter",
                // List of blacklisted words that should get deleted (Array)
                blacklisted_words: [''],
                // Should the bot issue a warning if this automod rule
                // has filtered a message (Boolean)
                warn: true,
            },
```

</details>

#### <mark style="color:orange;">Enabling it</mark>

Pretty simple, this toggles whether it's on or off.

It **has to be** either <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark>, so there's <mark style="color:red;">no leaving it blank</mark>!

On <mark style="color:green;">**`false`**</mark>, *<mark style="color:purple;">**Blacklisted Words filtering will be off**</mark>*.

On <mark style="color:green;">**`true`**</mark>, *<mark style="color:purple;">**Blacklisted Words filtering will be on**</mark>*.

#### <mark style="color:orange;">Small breakdown:</mark>

* <mark style="color:red;">**Name:**</mark> Represents the name of the rule. Can be changed to whatever you want, because this is what reflects on the Automod log as the reason for the punishment.
* <mark style="color:red;">**Blacklisted Words:**</mark> Represents what words are blocked from being said in chat.
* <mark style="color:red;">**Warn:**</mark> Represents whether the Automod will warn someone for the message that was caught. This is a toggleable option, which means you're able to set it to <mark style="color:green;">**`true`**</mark> or <mark style="color:green;">**`false`**</mark> to warn or simply delete and log respectively.

For example: If you wanted to warn someone for saying 'stupid' in chat, you'd set it up like this:

<details>

<summary><strong>Automod Blacklisted Words Config Example</strong></summary>

```json5
            blacklisted_words: {
                // Whether this automod rule should be enabled (Boolean)
                enabled: true,
                // "name" represents the name of the rule. It is a random name
                // that will be used for warn reasons and in the automod delete
                // message (String)
                name: "Blacklisted Words Filter",
                // List of blacklisted words that should get deleted (Array)
                blacklisted_words: ['stupid'],
                // Should the bot issue a warning if this automod rule
                // has filtered a message (Boolean)
                warn: true,
            },
```

</details>

***

## <mark style="color:blue;">Congrats!</mark> :tada:

You're all done here! Now you can move onto other plugins and see how they work!

<figure><img src="/files/2mdp3Cuo1tl75WyPW6QG" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iynxdev.com/plugins/moderation/moderation-master-tutorial.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
