What if instead of rejecting a player,
Grab the player name and scan for illegal characters and replace them with nothing.
Then set their name to the fixed name.
Only reject a player if a player name has all illegal characters.
^Just an idea.
replace = Player.Name.Replace('F***', '').replace('&', '').replace('$$$', '')
Player.Name = replace
If Player.Name == "":
Kick(Reason)