Constant text chat warnings triggered incorrectly when filtering non-chat text

Players in my game are persistently reporting that they are receiving warnings for their “text chat breaking the rules”. This is because there are no Roblox-provided filtering functions to filter strings without needing to pass an associated player. Without this functionality, any filter function call assumes that the player typed the text as “text chat”. This is NOT the case when typing solutions for Word Bomb, and causes many, many false positives just due to the sheer number of filtering calls made.




You can also notice that none of these messages are even remotely bad or vulgar. I made a different post about this issue earlier in the month.

These all happened over the short course of 4 minutes, before the system stopped warning the player for whatever reason. These are really scary warnings, even the player who reported it said that they got worried, and it is definitely detracting users from playing my game. Please add functionality to filter text without it triggering a “text chat” warning, or please disable this warning entirely until there’s a solution.

4 Likes

Hi! Can you elaborate more on this topic? In my experience playing Word Bomb, all of the other players happen to be in the same server. In which cases would you need to filter for players not in the server? is there functionality I’m not aware of?

1 Like

It’s less-so about filtering for players not in the server, but the importance of being able to filter text without needing to add this text to a specific player’s “chat context” and not implicating them for if players report them.

I’m referring specifically about the feature in Word Bomb called “Live Typing” which allows other users to be able to see the current player’s typing text by making many, many filtering calls. All Roblox filtering functions require that you pass a player. And in Word Bomb, Live Typing generally cannot be used as chat, so it doesn’t make sense to implicate players for typing bad words when this ISN’T a chat input box. Here’s an excerpt from my other bug report on another Roblox filtering issue:

“Live Typing” in Word Bomb is the system the game uses in order to be able to show the current player’s typing to all of the other players. To accomplish this, whenever the player edits their text, via addition, removal, or complete change of the text within the TextBox, the text must be refiltered through the Roblox filtering system.

The following is not confirmed to be certain, but after extensive testing, I can be almost positive this is true:
The problem causing the extreme filtering to our game’s chat then arises with a change to Roblox’s filtering system, which is making it so that each and every string of text filtered for a specific player is also being used as a sort of “chat context” for filtering in future calls to the filter function.

This means that, when you type text in Word Bomb, in the Roblox filter’s view, you are actually sending many, many unfinished messages. This may look like this to the filter:
T TR TRE TREE TREEH TREEHO TREEHOU TREEHOUS TREEHOUSE

We can’t be certain why the Roblox filter doesn’t like this, but we can make a good guess that it’s because of the nature of these strings. These are strange, unfinished strings of text. Maybe it sees it as spam, maybe it thinks the nature of the words being unfinished is malicious and that it’s a player trying to form a chat bypass.

Whatever be the case, NOW, if you are to send messages in the Word Bomb chat, the filter has a much higher chance of simply blocking anything you type. It doesn’t matter what you type, it will block it all. And this can likely last for many, many messages. I’ve personally had my messages blocked up to 6 and even 7 times, and I was typing DIFFERENT messages each time.

I wasn’t able to find a guaranteed word that causes the Roblox filter to go haywire, but people have mentioned that longer words are more likely to cause this to happen.

This is not just an issue for Word Bomb, there is one example I can think of that is a general issue for any games which store any sort of user input text in DataStores. For example, consider a game like a dream you’ve had before, where players can leave permanent notes around a building. When a player adds a note, it’s filtered, then sent to the DataStore to be saved. The problem is when you eventually need to take the note OUT of the DataStore when a new server is made and all the notes need to be loaded again.

According to the documentation, you are encouraged to filter the text strings again when taking them out, to get the most up-to-date version of the text filter. This is a great idea, because it ensures the security of the players reading the notes in the game.

But this is a problem now, because the player who originally typed that note is not present in the server, and even though the filtering functions allow you to pass a user ID, you cannot pass a user ID of a player who is not in the server. Essentially, the only way to be able to perform this is by passing a player who IS in the server. This has been the workaround for as long as filtering has been a part of Roblox, and many resources from DevForum posts who were experiencing similar filtering problems have been recommending to do this at this point.

Ultimately, not all filtering calls are text chat. It doesn’t make sense to assume that all filtering calls are text chat, and there’s no way for me to make a call for filtering without adding context to a player or triggering “text chat” violations. The Live Typing feature doesn’t need the same level of scrutiny that the regular chat box would need, because it is NOT used for chat. But it DOES need to be filtered. So there needs to be something different for these edge cases.

Hopefully that makes sense, I was a little all over the place

6 Likes

Thank you for the detailed explanation. We play Word Bomb in the office sometimes and its interesting to see how the sausage is made!


I personally agree that Roblox shouldnt conflate Text Filtering with Text Chatting and I am personally aware of the Player Generated Content use cases when it comes to displaying it in experiences. This post has generated some brainstorming internally how we can better support these cases.

For your specific case today, the Text Filtering team is determining steps to mitigate this issue for your experience before we close for our winter break. I’ll reply when there’s something concrete to share.

5 Likes

On the topic of text chatting, could these warnings be improved? Seeing these images of someone getting warned without actually breaking the rules is quite worrying.

1 Like

This was brought up a bit and its a bit unclear in the messaging, but I believe these users got a nudge because the system thought they were spamming which aligns with the themes the OP shared here.

This side effect is being considered on how it can be better convey (and more accurately)

1 Like

Is this warning new? Because my game uses a word generator from an external site and it gets filtered using the first player userid that joins, should any word get filtered the player gets a warning due to that? Since a lot of the words tend to get misfiltered.

image

local function _getUserId()
	while #Players:GetPlayers() <= 0 do task.wait() end
	return Players:GetPlayers()[1].UserId
end
while _secondWord ~= _filteredTextTwo do
	print(_secondWord, "was filtered!")
	table.remove(_randomWords, table.find(_randomWords, _secondWord))
	_secondWord = firstToUpper(_randomWords[math.random(1, #_randomWords)])
	_filteredTextTwo = TextService:FilterStringAsync(_secondWord, _getUserId()):GetNonChatStringForBroadcastAsync()
end
1 Like

really really lovely to hear. this area in general has been a consistent pain point for me.

I do also want to make some notes about cases where games simply need to filter randomly generated text, sentences, or anything that generally needs to be censored to ensure the safety of the players. I can think of a case where a mad-libs-esque game prompts players for specific words and then the game combines the words to show a funny result or something. the problem is that the words can be mundane by themselves but bad when put together.

Again, technically, this isnt anything any user in the game has typed, but you do need a player to be the fall guy for filtering this text.

Word Bomb actually does a very, very, very minor alteration of the user input. It’s basically negligible, but it is not nothing, and is a great example of needing to filter text that the user technically didn’t type.

Note how in the game, there are already letters pre-placed on the “highlighter” (as we call it)
Blanks
Because we need to filter the text as it is shown, NOT as the player has input, if the prompt is something like “ER”, and the player ONLY types the letter “P”, the game is going to run “PER” through the filter, because that is the SHOWN text that the players will see.

2 Likes

that’s exactly what will happen - but it’s experimental and not every player will see it, so the impact you’ll see is probablly minimal. it doesn’t seem like any action is being taken in any case, but the warning is definitely a major detraction

2 Likes