New Chat Filter Bypass Concern

You should kick or not deliver the message if this separator is used, people won’t use it unless they are bypassing.

what if they just do “I lxke” lmao

you cant possibly add every variation of a word

this is ESSENTIALLY the same thing as making your own chat filter

You can wrap the textWithoutSeparator with roblox textfiltering api

1 Like

I made this code from scratch and it’s very barebone.

Can you improve it like add a kick thing to make it more a little more fancier?

I can’t do it because I’m on a phone.

local Players = game:GetService('Players')
local TextChatService = game:GetService('TextChatService')
local General: TextChannel = TextChatService:WaitForChild('TextChannels').RBXGeneral

local separator = string.char(239, 191, 184)

General.ShouldDeliverCallback = function(message, textSource)
	for _, char in blacklistCharacters do
		if string.find(message.Text, separator) then
			if message.TextSource.UserId then
				local player = Players:GetPlayerByUserId(message.TextSource.UserId)
				if player then
					player:Kick('Chat filter violation')
					return nil
				end
			end
		end
	end
end

That would do the job, however I’m not sure if you can switch those characters with something else.

I don’t think you should give this script publicly available to everyone since this topic is accessible to everyone even when not logged in

You should report it to roblox and not show it even more people-

This could be a big concern

run the text through the text filter, then kick them or don’t send the message if it gets filtered


I’ll make a bug report with the information we have soon enough if staff doesn’t see this post

1 Like

A simple google search will give you the same scripts, theres no reason to hide it on here.

1 Like

This could be moved over to a private messages maybe

Not saying because its publicly accessible but so that the discussion can continue if the post gets taken down which will probably happen soon

I have already tried reporting exploits/bypasses to Roblox. They are incredibly slow to act on them if at all. The “Solara” executor mentioned in the OP has remained unpatched for half a year now. They need to start acting on this stuff immediately or expand their chat filter with some kind of OCR because right now it’s incredibly easy to bypass and say practically anything with exploits

the problem is figuring out if this even counts as a bug, i’d assume this can(???) be done without exploits

this issue is just sad because they want everyone to swap to TextChatService

1 Like

If you’re referring to “I’m gonna touch you”, this kind of behavior is unfortunately wide-spread. I’ve seen it in YouTube comments, Team Fortress 2, and even the innocent games, like Work At A Pizza Place. It’s just awful, truly.

1 Like

No, not that. They basically say exactly what he said in that message.

You should not use kick, expecially with how advanced exploiter are nowadays, kick function even if called on the server side return a function called on the client and then can be nil returned. So whatever the kind of system you might use. I would recommend using a banned word table and adding the following.

Solution for this:
Kick and wait 2 seconds.

if game.Players:FindFirstChild(player.Name) then
  player:Destroy()
end

Regards MagicLuau

1 Like

It’s a server script, nothing can be done. Stop trying to correct things you don’t have knowledge on, please.

image
image

image
image

I can’t upload more due to amount of stuff I have to censor. Keep in mind it’s an “All Ages” game, this is not acceptable at all.

@evilitself can you like add some sort of anti-bypass please

Heya! Here I made a comprehensive code that detects if a user tries to send a bypassed chat message. It should work for every separator characters that does the bypassing stuff.

It also warns the user before kicking them. So no false kicks

--> Services
local TextService = game:GetService("TextService")
local Players = game:GetService("Players")

--> User warnings
local UserWarnings = {}

--> Create a simple character size library thing
local CharacterSizeLib = {
	Cache = {}
}
function CharacterSizeLib:GetSize(code : number)
	if self.Cache[code] then
		return self.Cache[code]
	end
	local param = Instance.new("GetTextBoundsParams")
	param.Size = 50
	param.Text = utf8.char(code)
	self.Cache[code] = TextService:GetTextBoundsAsync(param)
	return self.Cache[code]
end


function IsTextReallyFiltered(TextToScan : string, UserId : number) : "safe" | "attempted"
	local CleanTextToScan = ""
	local work = pcall(function()
		for _,Char in utf8.codes(TextToScan) do
			local CharSize = CharacterSizeLib:GetSize(Char)
			if CharSize.X > 2 then
				CleanTextToScan ..= utf8.char(Char)
			end
		end
	end)
	if not work then
		return "safe"
	end

	--> Something's sus about this text so we gotta try to filter it again but without those invisible characters
	if TextToScan ~= CleanTextToScan then
		local work,result : TextFilterResult = pcall(function()
			return TextService:FilterStringAsync(CleanTextToScan,UserId,Enum.TextFilterContext.PublicChat)
		end)
		if work and result:GetNonChatStringForBroadcastAsync() ~= CleanTextToScan then
			return "attempted"
		else
			return "safe"
		end
	else
		return "safe"
	end
end


local TextChatService = game:GetService('TextChatService')
local General : TextChannel = TextChatService:WaitForChild('TextChannels'):WaitForChild("RBXGeneral")
General.ShouldDeliverCallback = function(message : TextChatMessage, textSource : TextSource)
	local UserId = message.TextSource.UserId
	if IsTextReallyFiltered(message.Text,UserId) == "attempted" then
		
		--> Warn user
		UserWarnings[UserId] = (UserWarnings[UserId] or 0) + 1
		-- Your warn notification code thing here
		
		
		--> Kick player if they kept repeating it
		if UserWarnings[UserId] >= 5 then
			local Player = Players:GetPlayerByUserId(UserId)
			if Player then
				Player:Kick("No bypassed bad words please 🙏")
			end
		end
		
		return nil
	end
end
Players.PlayerRemoving:Connect(function(Player)
	UserWarnings[Player.UserId] = nil
end)

Spoiler I haven’t tested this code yet.

I hope this helps while Robox is still tinkering with their “child safety” features

@be_nj Could we maybe get some eyes on this (referring to OP, not the reply)? Shouldn’t be too hard to patch out. Let me know if you need me to file a bug report for better tracking.

I can confirm relevant teams are already aware and are working to address

5 Likes