Update on Legacy Chat Deprecation and TextChatService Migration

I’m sorry for the developers that are using custom chat :pensive:

45 Likes

I literally just finished reading about the legacy chat :sob:

I wonder if unmaintained games will break.

22 Likes

The new chat system isn’t terrible but does anyone have a better method of figuring out if the chatbox is visible? I have a radio UI that I adjust the height of depending on if the chatbox is visible or not and with the old system I could just check the visibility directly in playergui but dont have an efficient method of doing so in this system

	StarterGui:SetCore("ChatActive", false)

	Player:SetAttribute("chatBoxHidden2", true)
	Player:SetAttribute("chatBoxHiddenConfirmed", true)
	Player:SetAttribute("lastFocus", tick())

	game:GetService("TextChatService"):FindFirstChild("ChatInputBarConfiguration"):GetPropertyChangedSignal("IsFocused"):Connect(function()
		local ChatInputBarConfiguration = game:GetService("TextChatService"):FindFirstChild("ChatInputBarConfiguration")

		if ChatInputBarConfiguration.IsFocused == false then
			local start = tick()
			Player:SetAttribute("lastFocus", start)
			Player:SetAttribute("chatBoxHidden2", false)
			Player:SetAttribute("chatBoxHiddenConfirmed", false)

			repeat
				task.wait()
			until tick() - start > 4 or Player:GetAttribute("lastFocus") ~= start or ChatInputBarConfiguration.IsFocused

			if Player:GetAttribute("lastFocus") ~= start then
				Player:SetAttribute("chatBoxHiddenConfirmed", false)
				return
			elseif ChatInputBarConfiguration.IsFocused then
				Player:SetAttribute("chatBoxHiddenConfirmed", false)
				return
			elseif tick() - start > 4 then
				Player:SetAttribute("chatBoxHidden2", true)
				Player:SetAttribute("chatBoxHiddenConfirmed", true)
			end
		else
			Player:SetAttribute("chatBoxHidden2", false)
			Player:SetAttribute("chatBoxHiddenConfirmed", false)
		end
	end)


	local lastChatActive = StarterGui:GetCore("ChatActive")
	local chatActivatedAt = nil
	local check = nil

	RunService.RenderStepped:Connect(function()
		local chatActiveNow = StarterGui:GetCore("ChatActive")

		if chatActiveNow == true and lastChatActive == false then
			Player:SetAttribute("chatBoxHiddenConfirmed", false)
			chatActivatedAt = tick()
		elseif chatActiveNow == false and lastChatActive == true then
			Player:SetAttribute("chatBoxHiddenConfirmed", true)
		end

		if chatActivatedAt and tick() - chatActivatedAt > 4 then
			local lastFocus = Player:GetAttribute("lastFocus")
			local timeSinceLastFocus = tick() - lastFocus
			local ChatInputBarConfiguration = game:GetService("TextChatService"):FindFirstChild("ChatInputBarConfiguration")

			if timeSinceLastFocus > 4 and not ChatInputBarConfiguration.IsFocused then
				StarterGui:SetCore("ChatActive", false)
				Player:SetAttribute("chatBoxHiddenConfirmed", true)
				chatActivatedAt = nil
				check = nil
			else
				check = tick()
			end
		end

		lastChatActive = chatActiveNow
	end)
26 Likes

rip any game that needs a custom chat system

31 Likes

For anyone using LegacyChat, that feel like still using LegacyChat:

(Includes a more modern look, bug fixes and features)


Why is TextChannel:SetDirectChatRequester() returning the error “:SetDirectChatRequester() is not enabled”? That api should be working by now, unless (we) got something wrong

Update


Hopefully it works now (pretty sure it didn’t work before even when calling it before adding TextSources)

22 Likes

One aspect of the “migration” component that’s worth delving into more detail is the mechanics on how it is intended to work.

The current strategy is not to simply set the TextChatService.ChatVersion to TextChatService, as that has a potential of breaking and disrupting many older experiences.

Instead we are exploring a “compatibility mode” that will continue running your old legacy chat scripts in the background but preventing them from being visible. This will work most often if your chats are integrated well into the top bar’s chat button. In case we cannot hide your old chat, we also plan to no-opt the ChatService:FilterStringAsync and TextFilterResult:GetChatForUserAsync responses to be an empty string. The plan is to instead show the default TextChatService UI in place so users can still socialize in experiences that were not able to be updated in time.

Running two versions of chat in an experience is non-ideal, even if one is hidden, so we do ask that if creators can they manually migrate to TextChatService for the best results, however Roblox is committed to backwards compatibility.

33 Likes

finally…

though… where are meshpart emission maps (:pray::pray::pray: please roadblocks i need this)

also how would this be applied? disable chat for those who are on the list? disable messages for those who sent it from the list???

16 Likes

Will the legacy Chatted event be deprecated or broken after the deadline? Whilst my game now uses the new TextChatService, I still rely on the Chatted event in a few places within my game for it to function correctly.

15 Likes

Cue everyone not understanding that you can still use custom chats with this, you just have to pipe messages through TextChatService.

21 Likes

yeah chatted event is completely broken for textchat
so you have to change it to onincomingmessage

14 Likes

Very nice, i love textchatservice. Keep up the good work!!

15 Likes

TextChatService may be new, but some games rely on legacy because of its certain features.

Not a fan of this.

18 Likes

Any hope and plans on fixing this

And adding a feature to update text properties live, instead of each time when hovering over chat?

19 Likes

Re-posting these feature-requests since the current state of TextChatService still unfortunately does not cover my needed use-cases. It’d be ideal to at-the-minmum exclude these sort of cases for needing to use TextChatService until a more solid solution can be implemented:

17 Likes

I really dont like how Roblox have still not achnowledged the lack of functionality parity and huge performance and API issues with the new chat service, despite many developers stating them in the previous post about this change.

No organisation should start a change or migration of a critical service before it can fully replicate all functions of the old system, and yet TextChatService very much fails this key checkbox required for any technical change.

15 Likes

Our released game uses animated UIgradients in the chat, which right now isn’t possible—so I’d like to ask again to keep this as a high-priority feature.
I’d also like to mention that it seems you aren’t able to add UIgradients to the actual message, and only to the prefixed text. We worked around this by setting the text to “ “ (setting it to “” caused it to still render the default text), and setting the prefix text to the actual message content.

17 Likes

Could you please update the dialog ui

15 Likes

Most of this post is still kinda confusing and unclear in some areas, like are we allowed to keep custom chats with textchatservice api or will that also get removed in april? Are there gonna be full gui customization options for the textchatservice or are we just stuck with the ugly default look? And much more

12 Likes

:joy: No, i will never migrate to TextChatService, as it is an useless and stupid chat service that nobody needs. I do not agree with these changes and I will refuse to migrate to that ugly new text chat service. As a 2017 roblox user, I do not agree to these changes and i do not wish to migrate in my game.

Forcing us won’t help. I will find a way to bring back the Legacy Chat System on Roblox. No matter what. I do not let me forced by a stupid company that doesn’t care about their community.

19 Likes

You are allowed to make a custom chat, as long as the messages route through TextChannels and not a custom remote event thing.

Edit: More specifically: Usage Guidelines | Documentation - Roblox Creator Hub

14 Likes