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: ChatProtect uses the Google Perspective API to instantly score messages for toxicity and offensive context. This delivers a significantly higher detection rate and catches slurs, subtle insults, and threats that standard filters miss.
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.
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.
settings:
# The prefix is displayed before each message (you can use color codes with &).
prefix: "&9ChatProtect &8» &7"
# Staff Alert Settings:
# Placeholders:
# %message% → The name of the player who triggered the check.
# %player% → 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
# The name and value have to be separated by the symbol "|"
# Placeholders: %player% %message% %check%
content:
- "**Player**| %player%"
- "**Message**| %message%"
- "**Check**| %check%"
checks:
# The toxicity check penalizes players for using offensive language in chat.
# This check will use the Google Perspective API by default. You can add custom
# blacklisted words to the blacklist.yml file in the server directory.
toxicity:
enabled: true
message: "Please watch your language!"
# By enabling this feature, you agree that you have read the Important Privacy Disclosure for Server Owners
# on the SpigotMC page. (https://www.spigotmc.org/resources/chatprotect-ai-powered-chat-moderation-1-8-1-21.117719/)
usePerspectiveAPI: false
# The score (0.0 to 1.0) when a message should be flagged as offensive.
maxScore: 0.7
# Note: Perspective API detections are flagged but not blocked.
# Local blacklist.yml matches are blocked immediately.
silent: false
# 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".
# Info: Please note that flags created using the Google Perspective API will not execute any commands at this time.
punishments:
- "1:1 [discord]"
- "1:1 [alert]"
- "10:10 tempmute %player% 10m Swearing"
# The spamming check will prevent players from flooding the chat with messages. It will detect
# random letters, repetitive messages and messages sent too quickly.
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