New Chat Filter Bypass Concern

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

I didn’t even know it was that easy to do WITHOUT exploits, why can you bypass by putting > symbols :sob:

Yea this has been a issue for a while

It works with most words it seems like which is a big concern

image

it shouldn’t be this easy to bypass the filter

I’m sorry, WITH ONE ARROW? Do they even filter custom names?

They do

image

They didn’t in the past but they are now filtering those names aswell since a few months

Honestly that’s dumb since only you can see them, but still, that’s such a stupid bypass, ONE > SYMBOL!?

At this point, they should filter the strings WITHOUT special symbols.