In our game Real Futbol League (Real Futbol League - Roblox), we recently converted manually to TextChatService before the stated date of April 30th, 2025. Consequentially, a major problem began playing up with our admin script (and any alternative for that matter): the main function for :m(essage), which serves as in-game announcements, began bugging. After stumbling upon the following post on DevForum I linked below; Update on Legacy Chat Deprecation and TextChatService Migration - #127 by TJW123456
I confirmed that TextService is indeed returning a blank message and bugging our admin commands. Strangely enough, we migrated our other game RF Fan Leagues at a later date than Real Futbol League, and it faces none of these issues with identical scripts and game settings.
Expected behavior
Thus, I would like to see a fix that reverts TextService to the default settings, through for example a re-evaluation of places or clear documentation that reverts TextService to normal behaviour: we are unable to fix this issue due to Roblox potentially flagging our place as non-compliant with the migration process and subsequently poses as a severe obstacle for managing football games inside Real Futbol League.
We have intentionally updated the behavior of TextFilterResult:GetChatStringForUserAsync to return an empty string. This is because chat strings should be flowing through the TextChannel API.
However for non-chat usecases, TextFilterResult:GetNonChatStringForBroadcastAsync and TextFilterResult: GetNonChatStringForUserAsync should not be returning an empty string and can be used.
Could we please get a better way to filter text outside TextChatService?
I know you guys want to hard block us from ever sending player messages outside your moderated APIs but there are genuine use cases for chat-less text filtering like random-generated strings and stuff loaded from external sources like datastores.
If the risk is that people will gravitate towards using these instead of your monitored middleware, then make it a guideline that you can’t use them for chat-related filtering.
I’m tired of writing boilerplate after boilerplate to support a once-existent feature that you purposefully and silently broke.
You can filter text outside of TextChatService via TextService:FilterStringAsync() which returns a TextFilterResult.
Just make sure you use the specific “non-chat” methods for your non-chat usecases and you should be good to go (e.g. GetNonChatStringForBroadcastAsync if its going to all players or GetNonChatStringForUserAsync if its going to a specific user)
You specifically requested a “better” way to filter non-chat, is there something that you feel is missing with this solution right now?
Oh my god, that works? I knew broadcast worked, but when I tested that specific method like a month ago I could’ve sworn it returned empty strings in live servers.
I guess that solves the bulk of the problems that I had with the current system. Sorry about that.
Yeah it should work… if not that seems like an oversight on our part. If you find it doesnt work, please report back. I’ll try it right now as well.
Specifically we wanted to no-opt the “GetChatForUserAsync” function because there’s no longer a usecase where we want creators to rely on that method since its intent is tied so closely with the chat usecase that has been superseded by TextChatService.
EDIT: Just tried on a game server with the developer console