/BungeeChatFilter

Chat and command filter control for BungeeCord using regex

Primary LanguageJava

##########################################
##                                      ##
##      Bungee Chat Filter Config       ##
##                 v1.7                 ##
##########################################

#Monitor commands - Monitor commands send by the players as chat
Monitor Commands: true

#Commands - The list of commands that the plugin will monitor
Commands:
    - msg
    - message
    - m
    - tell
    - whisper
    - w
    - g
    - global
    - s
    - l
    - local
    - url
    - website
    - hub
    - shop
    - broadcast

#AntiSpam - Will use the minimum chat delay to force players to wait *1500ms or what ever you specified between messages
AntiSpam: true
AntiRepeat: true
#Minimum-Chat-Delay - The time in miliseconds a player must wait between messages
Minimum-Chat-Delay: 1500
Minimum-Repeat-Delay: 60000
#Messages sent to the player in chat when they are blocked by AntiSpam or AntiRepeat
AntiSpamMessage: &cPlease do not spam
AntiRepeatMessage: &cPlease do not spam

#Rules - Groups of rules which monitor the chat
#rules:
#   rulename:                       - the name of the rule.
#       regex:                      - the string regex that the rule will check for.
#       ignores:                    - If the message contains a value that matches ignore then none of the actions will be performed.
#       permission:                 - the permission required to bypass this rule.
#       actions:                    - here is the list of actions the rule will perform if matched.
#           deny: true              - this will deny the message and cancel the event.
#           message: <message>      - this will send a message <message to the player. (Supports Placeholders, see below)
#           kick: <message>         - this will kick the player with the <message>. (Supports Placeholders, see below)
#           alert: <message>        - this will send the <message> to all players connected to the proxy server. (Supports Placeholders, see below)
#           remove: true            - this will remove any matches from the player's message.
#           replace:                - this will replace the matched word with a random word from the list below. (Supports Placeholders, see below)
#               - word1
#               - word2
#           lower: true             - this will change any matches into lowercase.
#           pcommand: (command)     - Proxy command, this will cause the player to send the (command) to the proxy server. Do not include a /. (Supports Placeholders, see below)
#           scommand: /(command)    - Server command this will cause the player to send the (command) to their current server. You must include a /. (Supports Placeholders, see below)
#           ccommand: (command)     - Console command, this will cause the proxy server console to execute the (command). Do not include a /. (Supports Placeholders, see below)
#                                      Note that there is currently no way to execute a command as the current server console.

#Placeholders                       - These placeholders can be used in any action strings.
#
# {player}                          - Replaced with the display name of the player sending the message
# {message}                         - Replaced with the original message as sent by the player
# {arguments}                       - Intended for use with commands, this will be replaced by all of the arguments following the first word of the player's message.
#                                       (for example a player sending "/send Zedwick Hello!" will return "Zedwick Hello!" in place of {arguments})

rules:

#Filters the word fuck and replaces it with a random word from the list
    swearfilter1:
        regex: (?i)(f+u+c+k+|f+u+k+|f+v+c+k+|f+u+q+)
        actions:
            replace:
                - fudge
                - frack
                - funk
                - fork

#Filters the list of swear words below and replaces them with a random word from the list. Uses a list as the regex
#The first item has (?i)(cunt to make the generated regex case insensitive.  The last item must end with a )
    swearfilter2:
        regex:
            - (?i)(cunt
            - whore
            - fag
            - slut
            - queer
            - bitch
            - bastard
            - dick
            - gay)
        actions:
            replace:
                - lovely
                - sweetie
                - sexy

#Filters the word nigger and denys the chat even while kicking the player and alerting the server why the player was kicked
    swearfilter3:
        regex: "n[^a]gg+(a|er|uh)"
        actions:
            deny: true
            alert: "{player} has been kicked for racism"
            kick: "You have been kicked for racism"

#Replaces the word bloodsplat with a coloured word if they have permission for colours and a chat plugin on the server that supports colors.
    colorReplace:
        regex: "bloodsplat"
        actions:
            replace:
                - "&cBloodsplat"
                #Will only work if the player has permission for colors on the servers chat plugin.


#when a player asks for op they will instead say one of the following from the list and be sent a message
    askforOP:
        regex: "(?i).*give me op.*|.*can i have op.*"
        actions:
            replace:
                - Can you please ban me
                - I use xray!
            message: '&cPlease don''t ask for OP'

#When the player uses 4 or more letters in a row all in caps lock then the message will be changed to lowercase
    CAPSPAM:
        regex: (\p{Lu}|\s){4,}
        actions:
            lower: true

#Removes magic, bold and italics from the players chat when they dont have the bungeefilter.antiformatbypass permission.
    AntiFormatText:
        regex: '&[k-o]'
        permission: bungeefilter.antiformatbypass
        actions:
            remove: true
            message: '&cYou do not have permission to use Format text'

#Removes color from the chat unless the player has the bungeefilter.colorbypass permission
    AntiColorText:
        regex: "&[0-9 a-f]"
        permission: bungeefilter.colorbypass
        actions:
            remove: true
            message: '&cYou do not have permission for colors'

#Assumes all IP addresses are advertising and all URLs that do not include this server's name are advertising
    AntiAdvertising:
        regex: (^.*([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}).*$)|(^.*((mc|play)\.(.*)\.(com|net))|((.+)\.(.*(mine|craft).*)\.(com|net)).*$)
        ignores: (^.*minecraftserver.*$) |(^.*minecraftserver2.*$)
        actions:
            kick: '&cNo advertising other servers.'
            deny: true

#When a player uses the command /hub they will instead cast the command /server hub to the proxy. Denies the command so /hub isnt also sent
    CommandShortcut:
        regex: /hub
        actions:
            pcommand: /server hub
            deny: true

#When a player uses the command /shop they will instead send a command to the server they are on /warp shop.
    CommandShortcut2:
        regex: /shop
        actions:
            scommand: /warp shop
            deny: true

#Creates a proxywide broadcast command !bungeefilter.broadcast means the player needs the permission for the check to work
    CreateCommand:
        regex: /broadcast
        permission: "!bungeefilter.broadcast"
        actions:
            alert:
            - ''
            - '&5[Broadcast] &a{player}&f: {arguments}'
            - ''
            deny: true

#Shortcut for website URL can use either /url or /website
    CreateCommand2:
        regex: (/url)|(/website)
        actions:
            message: "&l&6[Check it out]&3 This server's website is &6www.minecraftserver.com"
            deny: true