adb-plugin-automod
v1.0.0
Published
automod plugin for ADB
Maintainers
Readme
adb-plugin-automod
Content filtering plugin with configurable rules, whitelists, and actions for Advanced Discord Bot (ADB).
Features
Filter Pipeline (Optimized, fast checks run first):
- Invite: Blocks Discord invite links (e.g.
discord.gg/code). - Link: Blocks external URLs, supporting a domain whitelist.
- Caps: Flags messages exceeding a threshold of uppercase characters (default: 70%).
- Mention: Flags messages containing too many
@membermentions (default: 5). - Emoji: Flags messages containing too many emojis (Unicode and custom, default: 5).
- Word: Blocks bad words/phrases supporting wildcards (e.g.
*bad*,exactword,starts*). - Spam: Detects rapid messaging, consecutive duplicate messages, and repeated duplicate characters.
- Invite: Blocks Discord invite links (e.g.
Action Suite:
delete: Deletes the offending message.warn: Deletes the message, issues a guild warning to the user's profile, DMs the user, and logs the incident.mute: Deletes the message, applies a standard 10-minute timeout to the user, DMs the user, and logs the incident.timeout: Deletes the message, applies a custom-duration timeout to the user, DMs the user, and logs the incident.log: Deletes the message and logs the incident to the configured moderation log channel.
Whitelisting:
- Excludes channels or roles from specific filters (or all filters entirely).
Commands
/automod rule add [type] [action] [threshold?] [words?] [duration?]- Adds a new rule for a filter type.
/automod rule remove [rule_id|type]- Removes a rule by its database ID or filter type name.
/automod rule edit [rule_id|type] [action?] [threshold?] [words?] [duration?] [enabled?]- Edits an existing rule's configuration.
/automod list- Lists all configured AutoMod rules and whitelists.
/automod whitelist [type] [filter] [channel?] [role?]- Toggles a whitelist entry for a channel or role.
/automod action [type] [action?]- Views or sets the action for a given filter type.
Project Structure
adb-plugin-automod/
├── plugin.json # Manifest file with bot permissions
├── index.js # Entry point: registers commands/models, listens to messageCreate
├── commands/
│ └── automod.js # Slash command handling
├── models/
│ ├── rule.js # AutoModRule Mongoose schema
│ └── whitelist.js # Whitelist Mongoose schema
├── lib/
│ └── parseDuration.js # Shared utility for duration parsing
└── test/
├── mock-ctx.js # Mock plugin context for offline testing
└── local-harness.js # Offline test harnessTesting
Run tests locally without requiring a live Discord connection or MongoDB database:
npm install
npm testLicense
This project is licensed under the GNU Affero General Public License v3.0. See the LICENSE file for details.
