TextChatService Radio

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve? Keep it simple and clear!

I’m trying to make an in-game radio system for players to communicate.
I’ve seen the Roblox “migrate chat” thing recently and want to make sure it fits this.

  1. What is the issue? Include screenshots / videos if possible!

I’m stumped on how to approach using this new system.
.MessageRecieved doesn’t fire
.OnMessageIncoming has no TextSource
I’m probably setting up the channel/user/message wrong, but not sure what you’re supposed to do.

  1. What solutions have you tried so far? Did you look for solutions on the Developer Hub?

Tried looking at the TextChannel documentation and A quick guide on how to use and migrate to TextChatService - Resources / Community Tutorials - Developer Forum | Roblox but doesn’t seem targetted at separate chat systems as much as customising the current one.

After that, you should include more details if you have any. Try to make your topic as descriptive as possible, so that it’s easier for people to help you!

Server side

local radioChat = Instance.new("TextChannel")
radioChat.Name = "Radio"
radioChat.Parent = game.TextChatService.TextChannels

local function playerAdded(player: Player)
   radioChat:AddUserASync(player.UserId)
end

game.Players.PlayerAdded:Connect(function(player)
   playerAdded(player)
end)

Client side

local radio: TextChannel = game.TextChatService.TextChannels:WaitForChild("IST")

radio.MessageReceived:Connect(function(message)
   -- Never prints
   print("Received")
   print(message.Text)
end)

radio.OnIncomingMessage = function(message)
   print(message.Text) -- Prints T
   print(message.TextSource) -- Prints nil
end

task.wait(2)
radio:SendAsync("T")

I should be more than able to make this system if we weren’t supposed to use TextChatService now, I am thankful for anyone who’s able to help.

Your line radioChat:AddUserASync(player.UserId) should be radioChat:AddUserAsync(player.UserId) and your line local radio: TextChannel = game.TextChatService.TextChannels:WaitForChild("IST") should be local radio: TextChannel = game.TextChatService.TextChannels:WaitForChild("Radio").