TextChatService: No method for the server to always receive chats

TextChatService has virtually no server developer capabilities. The only things we are allowed to do are define ShouldDeliverCallback for TextChannels and edit the configuration instances.

This puts me at odds with creating chat logs for server moderation purposes. I have customer support and moderation teams that are required to see all chats sent in my experience but the lack of server capabilities puts me at odds with offering this. This is especially troublesome when allowing TextChatService to create default channels.

With the Legacy Chat System, I reimplemented the team channel so that any chats would replicate to both players on the same team and to our moderators. This is particularly important so they can see bubble chats (we have the chat window disabled). I’m not entirely sure how to go about doing that while letting TextChatService handle general, system and team chats by default.

Besides that, TextChatService will internally define ShouldDeliverCallback for default channels and silently fails when attempting to redefine them. Salt on the wound is that any event related to receiving messages is strictly client-side only. In this way, I am completely unable to make a chat logger with pure TextChatService API.

The only way I can continue to perform this is through the Player.Chatted event but it’s unclear if that will remain idiomatic long-term. Roblox has demonstrated that they will be taking a heavy handed approach to locking down the chat backend for safety updates so the API doesn’t completely feel stable to me, nor does it feel like “elaborate RemoteEvents” as a chat engineer once described TextChatService to me.

13 Likes

I must reiterate that the lack of server-side capabilities will severely cripple my transition to TextChatService - I’m forced to because the enforcement date is coming around the corner but I’m unable to retarget server features involving chats because the server has ZERO capabilities in the new chat API to intercept or receive messages before they’re delivered to the client.

Please look into opening up some opportunities for the server to interact with the chat system rather than locking developers into only being able to interact with the client-side of things. This is a massive reason why I preferred the Legacy Chat System.

3 Likes

Currently, the only way to receive chats on the server is from Player.Chatted. Other than that, there really isn’t anything to be able to read said messages. I would really like to be able to have filtered messages be read on the server without requiring the client to send them out through a remote event

The really dumb workaround I use is to run the code in ShouldDeliverCallback if were checking if the player themselves should receive their own message.
There really needs to be an event on its own for TextChatService.
(+ it just feels inconsistent to me that you must use Player.Chatted event instead of TextChatService version)