New In-Experience Text Chat System Public Release!

I couldnt reproduce this problem myself. Do you have a link to a place where this happens?

Hello. Quick question.

When will Chat Channels be added?

It’s the one thing that’s preventing me from adding TextChatService to my game.

I know that right now you can use TextChatService with Chat Channels if you create the custom UI to support it.

I can release an uncopylocked place shortly containing Alianor III: Anniversary’s chat (uses Text Channels + New Text Chat) as an example of a custom variant of the chat service.

It’d feature the majority of the chat system’s core, minus some of the game-specific functions I have.

1 Like

Winry 2.0 Standalone Service - ChatService
Uncopylocked Place: Custom Chat System - TextChatService
CustomChatService.rbxl (62.8 KB)


This has nothing advanced; I was aiming for parity with ROBLOX’s original Legacy Chat while integrating their new system. There’s lots of room for improvement. Some of this was done on-the-fly to learn about how to make a chat system compatible with TextChatService whilst working on Alianor III: Anniversary.

Setup

TextChatService:

  1. Publish a place (if you haven’t already) to get access to TextChatService
  2. Set TextChatService.ChatVersion to TextChatService
  3. Set CreateDefaultTextChannels to false - This is to prevent two folders called “TextChannels” existing and confusing the Client.

ServerScriptService:

  1. Copy the “ChatService” script (and all descendants) into ServerScriptService. It automatically sets itself up. You can customize any and all the UI as you wish.

Teams:

  1. Create the relevant teams you want in this.

ChatService creates TextChannels automatically for you on startup. It can also add new channels if you create a new team on the fly. [You must set the properties of the team before parenting it to the Teams Service. This could cause unpredictable behaviour in the event of multiple chat channels with the same name.

Quickly Modifiable Stuff

You can modify the PlayerAdded function to filter the player to the default channel only, team channels or other specific.

You can set the DefaultChannel to whatever you wish, provided you create the TextChannel, set it’s LayoutOrder Attribute and place it within ChatService.TextChannels.

DefaultChannel is set on ChatService → Line 106.

Missing / To Be Added Features

  • Private Message Support
  • Mobile-Friendly UI
  • Prefix Tag Support
  • Custom Group Chat Channels (create a chat channel for a provided array of players)
1 Like
1 Like

I just joined and it seems to be working for me.

Hm, probably my avatar settings because when I switched to R15 I could, R6 doesn’t work tho

1 Like

image
When will we be able to customize what the Roblox GUI calls, the “Target Channel Chip” for our own custom text channels?

4 Likes

The Social Interactions Developer Modules is bugged in the new chat system and cannot perform character animation effects

1 Like

Question, how would we disable display names and instead use our actual player name in the chat? I can’t seem to find the setting for it.

Thanks for infomation, I was tried to find how to enable this.

I have also noticed this issue. The reason why you can’t recreate the issue is because you are in R15. If you join games with the new chat in R6 and try to use chat emotes ( /e wave, /e cheer, /e dance, etc. ) it will say “You can’t use Emotes here”.

A quick update on the R6 emote issue. We’ve identified the issue and will be rolling out changes to address this shortly.

1 Like

Ive tried getting the absolute size and absolute position of the window but it is always zero in ChatWindowConfiguration. Are there any other ways I can get the size? ive tried using getcore but it didnt work for me

I would love to use the new TextChatService to match Roblox’s CoreGUi’s aesthetics. o Honestly, it doesn’t look good plus it doesn’t have all the features as LegacyChatService. I’m not which parts of the ChatUi need improvements but all I can say is that it doesn’t look good so I’m staying with LegacyChatService. (also bring back the Chat Resize Button, it’s useful for my needs)

I tried using Custom Chats like BetterChat but it was glitchy so I went back to using the iconic chat that everyone knows.

Again, I hope all the features are added to the new TextChatService and its Ui gets improved so I can match Roblox’s Ui aesthetics.

1 Like

One thing I’m both worried and confused about is whenever I enable the new ChatService the default keybind swaps over to . rather than the / for me. It doesen’t look like thats the case in the examples above so I’d be quite happy if someone helped me out with a fix or explanation?

Hi, I still have a suggestion for the new Text Chat System:
If possible, it would be nice to have a sort of mentioning system in the Roblox chat. One like Discord or Guilded have, where you type ‘@ username’ and the message would show up in chat with maybe for example a slightly differently colored backround / outline. This would be very useful in games where many people are in the server, alot of the times I am having trouble chatting with friends in servers with many people because we often miss a message either because it gets flooded away quickly by the amount of people chatting or because its not visible enough. A mentioning feature like this would help with this problem and also help with a problem where people don’t know wether a message was meant to be towards you or towards another person.

I found a way to do it, but it’s pretty janky, here’s the code, a local script in StarterPlayerScripts.

game.TextChatService.OnIncomingMessage = function(msg: TextChatMessage)
	local Props = Instance.new("TextChatMessageProperties")
	
	for i, v in ipairs(game.Players:GetPlayers()) do
		if string.find(msg.Text, "@"..game.Players.LocalPlayer.DisplayName) then
			local Find = tostring(msg.Text:find("@"..game.Players.LocalPlayer.DisplayName)):split(" ")
			local Prefix = msg.Text:sub(1, Find[1]-1)
			local Middle = msg.Text:sub(Find[1], Find[1]+game.Players.LocalPlayer.DisplayName:len())
			local End = msg.Text:sub(Find[1]+game.Players.LocalPlayer.DisplayName:len()+1)
			Props.Text = Prefix.."<font color='#ffff55'>"..Middle.."</font>"..End
		end
	end
	return Props
end

Is there a working method to get chat messages on the server? MessageReceived is only firing on the client.

Another issue I’ve ran into: when posting messages that take up multiple lines, the chat doesn’t scroll all of the way down. Instead, it only scrolls down enough to show the first line of the message. This makes reading the chat quite annoying, as you have to focus it and scroll down yourself frequently.

2 Likes