Represents a Discord Auto Moderation rule.
Auto Moderation allows guilds to automatically filter messages and member profiles based on keywords, spam detection, mention limits, and Discord's preset word lists.
Trigger Types
| Value | Name | Max per Guild | Description |
|---|---|---|---|
| 1 | keyword | 6 | Custom keyword filter |
| 3 | spam | 1 | Discord's spam detection |
| 4 | keyword_preset | 1 | Discord's preset word lists |
| 5 | mention_spam | 1 | Unique mention threshold |
| 6 | member_profile | 1 | Profile keyword filter |
Constants
All Discord limits are exposed as functions:
EDA.AutoMod.trigger_keyword() # => 1
EDA.AutoMod.max_keyword_amount() # => 1000
EDA.AutoMod.max_exempt_roles() # => 20
Summary
Functions
Block member interaction action type (4).
Block message action type (1).
Send alert action type (2).
Timeout action type (3).
Member update event type (2).
Message send event type (1).
Converts a raw Discord Auto Moderation rule map into this struct.
Maximum allow list entries for keyword trigger (100).
Maximum allow list entries for preset trigger (1000).
Maximum custom message length in characters (150).
Maximum exempt channels per rule (50).
Maximum exempt roles per rule (20).
Maximum number of keyword filter entries (1000).
Maximum keyword length in characters (60).
Maximum mention limit (50).
Maximum rule name length in characters (100).
Maximum regex pattern length in characters (260).
Maximum number of regex patterns (10).
Maximum timeout duration in seconds — 4 weeks (2,419,200).
Profanity preset (1).
Sexual content preset (2).
Slurs preset (3).
Custom keyword filter trigger (1). Max 6 per guild.
Discord preset word lists trigger (4). Max 1 per guild.
Profile keyword filter trigger (6). Max 1 per guild.
Unique mention threshold trigger (5). Max 1 per guild.
Discord spam detection trigger (3). Max 1 per guild.
Types
@type t() :: %EDA.AutoMod{ actions: [EDA.AutoMod.Action.t()] | nil, creator_id: String.t() | nil, enabled: boolean() | nil, event_type: integer() | nil, exempt_channels: [String.t()] | nil, exempt_roles: [String.t()] | nil, guild_id: String.t() | nil, id: String.t() | nil, name: String.t() | nil, trigger_metadata: EDA.AutoMod.TriggerMetadata.t() | nil, trigger_type: integer() | nil }
Functions
@spec action_block_member_interaction() :: 4
Block member interaction action type (4).
@spec action_block_message() :: 1
Block message action type (1).
@spec action_send_alert() :: 2
Send alert action type (2).
@spec action_timeout() :: 3
Timeout action type (3).
@spec event_member_update() :: 2
Member update event type (2).
@spec event_message_send() :: 1
Message send event type (1).
Converts a raw Discord Auto Moderation rule map into this struct.
@spec max_allow_list_keyword() :: 100
Maximum allow list entries for keyword trigger (100).
@spec max_allow_list_preset() :: 1000
Maximum allow list entries for preset trigger (1000).
@spec max_custom_message_length() :: 150
Maximum custom message length in characters (150).
@spec max_exempt_channels() :: 50
Maximum exempt channels per rule (50).
@spec max_exempt_roles() :: 20
Maximum exempt roles per rule (20).
@spec max_keyword_amount() :: 1000
Maximum number of keyword filter entries (1000).
@spec max_keyword_length() :: 60
Maximum keyword length in characters (60).
@spec max_mention_limit() :: 50
Maximum mention limit (50).
@spec max_name_length() :: 100
Maximum rule name length in characters (100).
@spec max_regex_length() :: 260
Maximum regex pattern length in characters (260).
@spec max_regex_patterns() :: 10
Maximum number of regex patterns (10).
@spec max_timeout_seconds() :: 2_419_200
Maximum timeout duration in seconds — 4 weeks (2,419,200).
@spec preset_profanity() :: 1
Profanity preset (1).
@spec preset_sexual_content() :: 2
Sexual content preset (2).
@spec preset_slurs() :: 3
Slurs preset (3).
@spec trigger_keyword() :: 1
Custom keyword filter trigger (1). Max 6 per guild.
@spec trigger_keyword_preset() :: 4
Discord preset word lists trigger (4). Max 1 per guild.
@spec trigger_member_profile() :: 6
Profile keyword filter trigger (6). Max 1 per guild.
@spec trigger_mention_spam() :: 5
Unique mention threshold trigger (5). Max 1 per guild.
@spec trigger_spam() :: 3
Discord spam detection trigger (3). Max 1 per guild.