TextChatService: New Chat Window Customization and Delivery APIs

Such an exciting new feature, thank you roblox dev team for your hard work!

Is there a way to remove already existing messages in the chat? So if you get out of range per example it would clear the message from the other player?

I’m so excited to customize the chat window in my game! Thank you!

We could now invent something as such called “proximity” chat, to go alongside the voice chat! This is a neat ass feature!

1 Like

Great update in terms of the chat, makes customisation significantly easier!

However, another great update would be the addition of a built-in system for whispering to multiple people are once, for example /w USERNAME1,USERNAME2, and then the people replying would also be able to reply in that group, so we could chat to multiple people at once.

2 Likes

In my opinion it would be nice for BubbleChats to have a special indicator for messages sent in TeamChat and Whispers, since it’s impossible to know in games which have the Chat Window Logs disabled. It could be signalled by a different color, a prefix like [T] and [W] or something along those lines.

Great update tho! It’s always nice to see getting some more customizability.

3 Likes

I made a test place as an example of this, so if anyone wants to try it, here you go:


If anyone is wondering how to do this, here's a little tutorial on how you would do it

First, make sure TextChatService is enabled of course.

Now, create 2 Teams, one named “Dead” and one named “Alive”. The Color of both teams doesn’t matter.

Then create a script in ServiceScriptService.

With this code inside:

local TextChatService = game:GetService("TextChatService")
local Players = game:GetService("Players")
local Teams = game:GetService("Teams")

local GeneralChannel : TextChannel = TextChatService:WaitForChild("TextChannels").RBXGeneral -- Variable for the General Channel

-- Defining Both Teams
local Dead = Teams.Dead
local Alive = Teams.Alive


GeneralChannel.ShouldDeliverCallback = function(message : TextChatMessage, targetTextSource : TextSource)
	local TextSource = message.TextSource -- The Speaker
	
	local player = Players:GetPlayerByUserId(TextSource.UserId) -- The Player of the Speaker
	local otherPlayer = Players:GetPlayerByUserId(targetTextSource.UserId) -- All the other players in the game

	-- Makes it so players on the Alive Team can't see the messages on the from the Players on the Dead Team, but the Players on the Dead Team can see the Messages from the Players on the Alive Team
	return (player.Team == otherPlayer.Team) and (player.Team == Teams.Alive and otherPlayer.Team == Teams.Dead)
end
4 Likes

Hey guys, great update. I’m not sure if this has been fixed yet, but with the new TextChatService enabled, using :Chat() on a part doesn’t actually produce a chat bubble. This is problematic since :Chat() only accepts parts and characters owned by actual players, and prevents us from making talking NPCs.

3 Likes

We hear you, as well as the other developers who have requested this–this is something we are planning to tackle very soon

4 Likes

As mentioned in the earlier post for Bubble Chat integration, we are interested in pursuing a solution that allows you to customize bubbles on a per-message basis, which will allow for player/object specific bubble chat customization alongside many other use cases. We’ll let you know once we are able to get to this!

2 Likes

This should be fixed now! If you’re still running into any issues, please let us know.

The default Chat window needs the option for a channel selector. This is whats putting me off switching.

2 Likes

willl legacychatservice be accessible after the full roll-out?

1 Like

Completely agree, my game NEEDS the channel bar, I would’ve switched over long ago if they had just added the channel bar.

My game currently utilizes global and local chat, with local chat being proximity based and global chat going to every player in the current server, as well as a system messages channel. I could add a prefix like [L] to messages but it would be much more visually pleasant and convenient to have different channels for it which people could freely join or leave if they don’t want to see certain messages without having to code all this manually.

2 Likes

i hope we should also get on the ChatWindowConfigs something like this: AutoHide = boolean or AutoHideDuration = number so we can just edit the auto hiding feature of the chat window.

This is a fantastic update, thanks roblox!

This is an awesome addition, being able move, resize and color is just something that should have been a thing long ago.

It would be nice to be able add a background image or something to it, other then putting a image lable behind it. Ah well overall im excited to play around with this

The options to change things are there but the chat box is still the old, and nothing changes, I’m not sure what im missing, I’ll see if it needs to update or something. I’ve read over the post and the linked dev hub post

I must say, when the new chat came out, it certainly felt like we went back to the older style of Roblox UI. It is starting to grow on me, but I am not a huge fan of the dark background and curved corners; I guess I’ve just gotten used to a certain style lol.

I really appreciate this addition to make customisation of Roblox Core UI easier for us so that we can fit this in with the natural aesthetic of our experiences.

I would like to ask if it is possible to also change the transparency of the background and other elements, as well as change their curve – or completely remove it?

Secondly, are there plans to also revamp the player list UI to coincide with the default aesthetic of the new chat, and also provide customisation accordingly?

Lastly, there is a bug that I’m sure y’all are aware of which stops players from being able to send messages sometimes when they join an experience. It can last a good 2 minutes and makes communication somewhat difficult, especially when someone asks you a question and you’re unable to respond, making it seem like we’re ignoring them.

Apologies for the rant and rather tangential off-shoot of further questions.

This feature looks amazing, I’ve always been a huge proponent for customisation! Keep up the amazing work, can’t wait to see what you guys do next!

:sunglasses:

2 Likes

Cool update I can’t wait to use it in games later on.