Hello Developer Community,
We have a lot of announcements for you all today. I apologize in advance for the wall of text, but everything here is very important.
New Chat Privacy Features
This week we are adding privacy control settings for in-game chat and app chat. Users and parents will be able to disable chat entirely or restrict it to only friends through an account setting. In order to accommodate this update some of you may need to change how chat and other messaging systems are handled. Thankfully this should not impact most developers out there, even developers using custom chat should not need to update code (this is not guaranteed and depends on how your code is structured)
You must update your game if it does any of the following:
- Overrides default chat with a previous version
- Replaces default chat with a custom implementation that does not individually check sender and receiver
- Any custom tools that allow players to send text to other players
We will be adding new methods to the API today to support these new privacy settings for in-game chat. The default chat will also be updated to correctly use this. The new methods will be added to the Chat service and look like:
bool Chat:CanUserChatAsync(int userId)
Returns false if the user has chat disabled.
Local scripts will throw if called for any user other than the local player.
It will throw if the given user is not connected to the current server.
bool Chat:CanUsersChatAsync(int userIdFrom, int userIdTo)
Will return false if the two users cannot communicate because their account settings do not allow it.
Only allowed from server scripts. In the future local scripts will be able to check if the local user can communicate with specific users.
Currently it will throw an error if both users are not both online in the current server, but in the future we will expand this to be usable for offline users or users who are in a different server.
In most cases it will return immediately. May yield in the future in some cases if called from a local script, before friend status is known, or if the one of the users is not in the current server.
User inputted text like team names, pet names, or shop titles that is not used as communication does not have to use CanChat checks.
If this affects your game, you will need to update it to use this API to respect a user’s chat privacy settings immediately to avoid any moderation actions. If you have questions about implementing this API please reach out to developer relations DevRelations@roblox.com with questions. If your game is using custom chat, and not filtering correctly for users that have chat turned off, your game will not be playable once these updates go live.
If you would like more information on these changes please refer to the wiki article located here.
We know these changes can be challenging and they have been coming fast, but user safety and privacy is always important. Thank you for working with us as we continue to ensure every user in our community is safe. We are also working on plans so that future changes can be rolled out smoother for everyone.
Changes to Text Filtering API
FilterStringAsync and FilterStringForBroadcast
Roblox is a platform with infinite possibilities, and tons of community created games and content built up over the years. Some of the games on Roblox are nearly 10 years old and are still working; sometimes even better than they did when they were first published. Achieving this has been no small feat and is an ongoing collaboration between the Roblox team and developers.
Given that, supporting new features like chat privacy settings in all games in Roblox is always challenging, but is important to make sure the privacy of our users is respected. In order to make some of these older games with fully custom chat or communication features comply with the new privacy settings we will be making changes to our existing text filtering APIs.
Starting this weekend
FilterStringAsync will return a blank string instead of filtered text if source user and the target user aren’t allowed to chat with each other because their privacy settings do not allow it. FilterStringForBroadcast similarly will return a blank string if the source user does not have chat enabled.
We realize this may block users with chat disabled from saving text, where it is not our intent for it to be blocked, like pet names, this change is necessary to keep older games that haven’t been updated safe for those users. We will be listening to feedback and working to implement a good long term solution for developers soon. This will most likely come in the form of a new set of text filtering APIs similar to the old ones, but with more clearly defined uses cases and straightforward rules for their use to make using them correctly much more straightforward than it is now. We’ll also be working to better support new features developers are building now that are currently poorly supported by the existing APIs, like offline and cross server messaging systems.
Displaying account age information in UI and <13 chat filter changes
All accounts are receiving another form of protection to ensure parents and users are being protected. Starting this weekend all accounts will now have a visual indicator of the accounts age at top of the in-game UI. This applies to all accounts and will specify whether a user is over 13 or under.
This will add a small UI element to all accounts, but beyond the small UI change this should have little impact on developers. Here is a mockup of what this will look like in-game:
Under 13 users are also going to see a change in what words are allowed through chat filters. Starting today numbers (both numerical and written) are blocked for under 13 users. This is part of our continued efforts to better protect under 13 users. We’re working on being able to allow trusted under 13 users to say numbers again and will update you on this as soon as we can. We understand that numbers are used in many games.
Sincerely,
Developer Relations
DevRelations@roblox.com