ChatProtect - AI powered chat moderation! [1.8-26.3]
2.4.1Tired of flooded chat? Remove spam, swearing, ads and more automatically - Fully customisable!
- Tested MC versions
- 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19, 1.20, 1.21, 26.1, 26.2, 26.3

Overview
ChatProtect is a robust and modern moderation plugin that automatically moderates your chat, preventing spam, offensive language, and advertisements. Are you tired of players advertising their servers? Annoyed by a flooded chat?
ChatProtect is the solution!
Features
AI-powered Chat Moderation:
When enabled, ChatProtect Cloud uses OpenAI's Moderation API to score messages for toxicity and offensive context.
Massive Blacklist Coverage:
ChatProtect comes with a pregenerated list of blacklisted words. This filter will check every single message on your server. ChatProtect can even detect and block attempts to bypass the chat filter.
Advertisement & IP Blocking:
Automatically and instantly block players trying to advertise other servers. We block IP addresses, domain names, and suspicious links to keep your players safe.
Advanced Spam & Flood Prevention:
Keep your chat clean and readable. ChatProtect automatically filters out:
- Repetitive Messaging (Chat flooding)
- Excessive Caps (Screaming/Uppercase spam)
- Random Letter Spam
Discord Alerts:
Use Discord Webhooks to automatically send alerts to your private staff channel the moment an message is flagged by ChatProtect.
Spam bot detection:
ChatProtect can identify spam bots, which are often found in hack clients such as Liquidbounce.
LiquidBounce Spammer Module vs. ChatProtect

Installation
- Download the plugin: Get the latest version of ChatProtect from SpigotMC.
- Install: Place the ChatProtect.jar file into your server's plugins directory.
- Restart Server: Restart your server to enable the plugin.
- Configure: Customize the plugin by editing the config.yml file in the plugins/ChatProtect directory. Replace the default kick and ban commands with your own punishment commands (e.g. replace kicking with a temporary mute).
- Testing: When testing the plugin make sure you don't have operator / chatprotect.bypass permissions. Otherwise you will bypass the checks.
Commands and Permissions
- /chatprotect alerts (chatprotect.alerts)
- /chatprotect reload (chatprotect.reload)
- /chatprotect clearchat (chatprotect.clearchat)
- /chatprotect logs (chatprotect.logs)
- /chatprotect clearlogs (chatprotect.clearlogs)
- chatprotect.command (See the command)
- chatprotect.bypass (Bypass the detection)
Configuration
config.yml
#
#
# /$$$$$$ /$$ /$$ /$$$$$$$ /$$ /$$
# /$$__ $$| $$ | $$ | $$__ $$ | $$ | $$
# | $$ \__/| $$$$$$$ /$$$$$$ /$$$$$$ | $$ \ $$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$
# | $$ | $$__ $$ |____ $$|_ $$_/ | $$$$$$$//$$__ $$ /$$__ $$|_ $$_/ /$$__ $$ /$$_____/|_ $$_/
# | $$ | $$ \ $$ /$$$$$$$ | $$ | $$____/| $$ \__/| $$ \ $$ | $$ | $$$$$$$$| $$ | $$
# | $$ $$| $$ | $$ /$$__ $$ | $$ /$$| $$ | $$ | $$ | $$ | $$ /$$| $$_____/| $$ | $$ /$$
# | $$$$$$/| $$ | $$| $$$$$$$ | $$$$/| $$ | $$ | $$$$$$/ | $$$$/| $$$$$$$| $$$$$$$ | $$$$/
# \______/ |__/ |__/ \_______/ \___/ |__/ |__/ \______/ \___/ \_______/ \_______/ \___/
#
# Made with ❤ by TheTigerPython in Germany
settings:
# The prefix is displayed before each message (you can use color codes with &).
prefix: '&9ChatProtect &8» &7'
# Staff Alert Settings:
# Placeholders:
# %player% → The name of the player who triggered the check.
# %message% → The actual text content that was flagged.
# %check% → The name of the detection module (e.g., Toxicity, Spam).
# %reason% → Technical debug info or the specific rule violated.
alertsFormat: '&9%player% &7| &9"%message%"'
alertsHoverFormat:
- '&9Player &8» &7%player%'
- '&9Message &8» &7%message%'
- '&9Category &8» &7%check%'
- '&9Details &8» &7%reason%'
- '&9Click to mute %player% for %check%! &7(/tempmute)'
alertsCommandSuggestion: tempmute %player% 10m %check%
# We can also check private messages using commands for spam, advertisements
# and inappropriate language. This is a list of all the commands we check.
commands:
- msg
- message
- tell
- me
# Automatically enables alerts for players with chatprotect.alerts permission.
automaticallyEnabledAlerts: true
discord:
# If you want to enable this discord bot. (true/false)
enabled: false
# ChatProtect requires a webhook to send messages to your Discord server.
# Watch this tutorial to learn how to create a webhook: https://www.youtube.com/watch?v=fKksxz2Gdnc
webhook: ''
inline: false
name: ⚠️ » Chat Protect Alert « ⚠️
footer: ChatProtect - Automatic chat moderation
# The name and value have to be separated by the symbol "|"
# Placeholders: %player% %message% %check%
content:
- '**Player**| %player%'
- '**Message**| %message%'
- '**Check**| %check%'
logs:
# Available: NONE, FILES, MONGODB
type: FILES
# The format used for timestamps in the log files and database.
# Pattern guide: yyyy (Year), MM (Month), dd (Day), HH (Hour 24h), mm (Minute), ss (Second)
format: 'yyyy-MM-dd HH:mm:ss'
# MongoDB Authentication Connection URL string
mongoDB: ""
# Target storage database structural namespaces
database: "chatprotect"
collection: "logs"
checks:
# The toxicity check penalizes players for using offensive language in chat.
# You can add custom blacklisted words to the blacklist.yml file in the server directory.
toxicity:
enabled: true
message: Please watch your language!
# ChatProtect is able to detect bypass attempts such as writing "1uck" instead of "fuck"
# Having this enabled will cause some false positives, but will severely strengthen the toxicity check.
detectLeetspeak: true
# Enables a ChatProtect cloud check that uses the OpenAI Moderation API to verify every message.
# Due to API latency, ChatProtect cannot block messages in real-time before they appear in chat.
# Note: You are responsible for informing players that chat messages are reviewed by a 3rd-party.
useCloudDetection: false
# The score threshold (0.0 to 1.0) required to trigger an alert for a message. (e.g., 0.7 = 70% confidence)
cloudDetectionThreshold: 0.7
# Here, you can set different punishments for each check. Every line always follows this format:
# Threshold:Interval Command.
# Placeholders: %player% (the player's name) and %message% (the flagged message).
# This command is always executed in the server's console. You can also use [Discord] to send an alert
# to Discord (see above), or [alert] to send an alert to all online staff via "chatprotect.notify".
punishments:
- 1:1 [discord]
- 1:1 [alert]
- 10:10 tempmute %player% 10m Swearing
# The spamming check prevents players from flooding the chat with messages. It has various different checks
# to detect repetitive messages, random letter spam and more.
spamming:
enabled: true
messages:
speed: Please don't spam the chat!
uppercase: Please don't use excessive uppercase letters!
repeat: You have already said that before!
# The cooldown period is in milliseconds between each message sent. Note: we will not immediately block.
# Messages will not be blocked immediately for being sent too quickly, but rather when lots of messages exceed this limit.
minMessageCooldown: 500
# The percentage of a message that must be in uppercase for it to be blocked (default: 0.4, or 40%).
maxUppercasePercentage: 0.4
# The maximum allowed similarity between messages is 0.7 (70%).
maxSimilarityPercentage: 0.7
# This is the maximum number of words per minute before the message is flagged as spam. Set to -1 to disable this check.
maxWPM: 200
# The brackets mean that there are currently no punishments or alerts for this check.
# However, you can add them yourself, as shown above.
punishments: []
# The advertising check will prevent players from sending IP addresses and links in the chat.
# The advanced mode provides an additional level of protection but may result in some normal messages being blocked.
advertising:
enabled: true
message: Advertising is not allowed on our network!
# Toggle advanced mode. Will detect more advertising attempts, but may lead to some false positives.
advancedChecks: false
# Domains or IP addresses exempt from the advertising check.
whitelist:
- "yournetwork.net"
- "store.yournetwork.net"
# See above (toxicity).
punishments:
- 1:1 [discord]
- 1:1 [alert]
- 10:10 tempmute %player% 10m AdvertisingPlease send a private message for support!
Leave a review :)
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta