Allow Text Filtering from non-present UserIds

As a Roblox developer, it is currently impossible to safely filter text created by players who are not present in the current server.

The simplest fix for this would be to make TextService:FilterStringAsync 's fromUserId parameter work for any UserId and not just players who are in the current server.

Use Cases

  • Cross-Server Chat
  • Items with custom names that persist in the game world across all servers
  • Custom text (names, MOTD) that persists in a private server after the owner leaves

Why is it impossible?

  • Why not store the unfiltered text and filter it each time? FilterStringAsync requires the sending player to be present in the server, so this is impossible.
  • Why not just store the filtered text? FilterStringAsync returns a TextFilterResult instance, which is used to get the final text. Because TextFilterResult is an instance, it can’t persist after the server shuts down using things like DataStores and can’t be sent to any other servers using things like MessagingService. This makes it so only the final string can be saved or sent to other servers, which is not correct.

Workarounds

  • Store the filtered text. This is incorrect because it cannot keep up with updates to the text filter and cannot benefit from per-user filtering.
  • Store the unfiltered text and then pretend someone else sent it when it’s time to filter. This is incorrect because filtering changes based on the account details of the player who sent it. For example, a 13+ user will get a different result from the text filter than an under 13 user.

If Roblox is able to address this issue, it would improve my development experience because I would be confident that all user-facing text is being correctly filtered without having to do any ugly workarounds like saving filtered text in DataStores or pretending a different player sent the text.

The FilterStringAsync API has a statement which implies this feature is already planned, but I haven’t heard or seen anything about it despite searching the DevForum pretty thoroughly:

image

36 Likes

sorry for the one+ year bump, but I believe we really need this. I feel using a random user in the server to filter strings is a terrible idea.

I’m currently working in a team on a project that requires sending messages between servers and I am forced to use a random user in each server for it. This is problematic because the user might be under 13, it breaks roblox’s context aware filters, and potentially violates terms of service.

3 Likes

Needed feature. We are working on implementing AI generated text in our game, which evidently needs to be filtered, but we have no ability to do so through Roblox’s native filtering system because of the UserId requirement.

2 Likes

Currently running into an issue where I really need this (or if there’s some sort of alternative that I’m unaware of, please let me know).

RobloxStudioBeta_4zatPdfInE

I have a sort of clan system and would like to filter the descriptions/shouts whenever receiving the data, which is displayed in a list for everyone. Don’t think it’d be proper to use the other clients userId (i.e. not the clan owner), since they weren’t the ones that created the message.