It has occurred to me that TextChatService does not have an equivalent for the Legacy Chat System’s In-Progress Commands feature. This allowed developers to run some Lua code every time a change in the text box was detected. My primary use case for this was to promote custom text channels to the same level of first-class support that the Team and Whisper channels had.
In TextChatService, this behaviour is retained for Team and Whisper channels however developers are only allowed to operate on completed chat messages in transit or at a destination rather than while they are being typed. This prevents me from promoting a cross-team channel to the same level as Team itself and being able to present my custom channels fashionably without channel tabs.
For example, with Teams “A” and “B”, I want to allow players to type “/ab” and after they hit space, it sets the TargetTextChannel and adds a label to the bar declaring that they are typing into the “AB” channel. Currently I cannot do this and require players to hit enter then change the TargetTextChannel, then have them type again to send the message. On top of this, I can’t create a label in the bar, so they don’t know if they’re typing in “AB” to begin with.
Unfortuntely I am not willing to use any workarounds or play ball with the policies around TextChatService and this only sort of resolves half my problem.
Being able to proactively switch the TargetTextChannel with a TextChatCommand or otherwise is one half of the deal but without the ability to label my custom channels in the chat bar, the other half is missing. Players need to clearly be able to see that they are talking in non-default channels.
50% of my game relies on player-to-player interaction so I place a great importance on chat functionality. I do like the vanilla chat bar; I don’t want to go through the effort of making a custom bar UI just to regain this functionality, so I would definitely love if Roblox could support it instead as they did before. There’s generally just a lot to gain cosmetic-wise from being able to run code as a player types.
Furthermore, I’m not able to peek into the CoreScripts responsible because Roblox has locked those down as well. So it’s not just TextChatService almost entirely being in core services but also that the code isn’t even super accessible anymore, so I can’t replicate/fork it while respecting the new chat policy as well.