How can I create a text channel with Roblox's old text service?

It’s nigh impossible to find resources for this because everything I can find uses Roblox’s new TextChatService, but I’m still using Roblox’s old text chat; I’m not migrating to the new service at this time and I can’t tell what resources are for the new or old service

I need to:

  • Create a second text channel that only certain users have access to
  • Be able to send system chat messages to that channel

Using Roblox’s deprecated system, not the new one we are migrating to, because I have not migrated yet and am not doing so at this time
That’s all

Thank you for any help

I’ll just start off by saying, I recommend not trying to do any of this as roblox is removing the legacy chat completely. If you want to continue using it you’ll have to save every script rquired for it to run.

If you still want to though there should be a script in (i believe) server script service called “Chat”. Copying this script and pasting it in server script service outside of runtime should allow you to modify the chat script.

Now I’m not entirely sure how to do all of this but there should be pretty detailed method names that allow you to create your own channels and manage “Speakers” (these are players that can chat) that have access to that channel

Looking into it, the script is called “ChatServiceRunner” and i was able to make an admin channel by adding this to the bottom of the script


local admins = {game.CreatorId}
local AdminChannel = ChatService:AddChannel("admins", false)
AdminChannel:SetChannelNameColor(Color3.new(1, 0, 1))
AdminChannel.WelcomeMessage = "Welcome to the admin channel"

ChatService.SpeakerAdded:Connect(function(speakerName)
	local speaker = ChatService:GetSpeaker(speakerName)
	local player = speaker:GetPlayer()
	if (table.find(admins, player.UserId)) then
		speaker:JoinChannel("admins")
	end
end)

About system messages. They won’t display if you send them before the chat has loaded on the client, so don’t send anything until you’re sure they finished loading.
Here is how you send system messages to certain speakers:

local extraData ={
	Font = Enum.Font.SourceSansBold,
	TextSize = 23,
	NameColor = Color3.new(1, 1),
	ChatColor = Color3.new(0.458824, 0.321569, 1),
	ChannelColor = Color3.new(1),
	--[[Tags = {
		{
			TagText = "Staff",
			TagColor = Color3.new(0, 1),
		}
	},]]-- Tags don't work for system messages but thought I'd leave this here in case you want to know how they're formatted
}
		task.delay(3, function()
			AdminChannel:SendSystemMessageToSpeaker("hello from system", speakerName, extraData)
			speaker:SendSystemMessage("hey there", "All", extraData)
		end)
		
		--optionally you can format it like this
		task.delay(3, AdminChannel.SendSystemMessageToSpeaker, AdminChannel, "hello from system", speakerName, extraData)
		task.delay(3, speaker.SendSystemMessage, speaker, "hey", "All", extraData)

thank you so much!! this helps a lot!!