Text Chat Service - stuck on sending for a LONG time

Im having this issue right now and it is a MAJOR issue. I woke up in the middle of the night to discover that my chats not technically working. To clarify: its stuck on the status of Enum.TextChatMessageStatus.Sending for the longest time before it actually sends. Though this is usually 5 or WAY more minutes down the line.

From what ive gathered - from what I can see… - The messages are going into the textchatservice and just staying in there for god knows how long. Players in my game have been reporting it for hours so this doesnt seem to be an outage issue or temporary bug. Can I please get some help with this?

[I left the code snippet and unlisted youtube video link in staff]

this is the portion of the script im running, the message does go through but testing through the task.delay keeps its status on “sending” and it never goes through. Can i please get some help? I posted the unlisted video. The chat was working perfectly fine last night. I went to bed, woke up today and it was broken. I hadnt released any updates or changes since.

A private message is associated with this bug report

7 Likes

  • I placed roblox’s chat system back in and im receiving a “your message could not be send.” response. I dont quite know whats causing this in the slightest.
3 Likes

Ive placed Roblox’s default chat into the game for the time being as THAT specifically seems to be working fine. Just the custom chat itself is not working at all.

1 Like

For me, it seems that when using :SendAsync() on a TextChannel, you must read a string from a TextBox. Concatenating or in any way modifying this variable or data reading it will produce the “Your message could not be sent” error. You may also not send preset messages this way (You were never supposed to in the first place, but just in case you are). If it doesn’t work, you need to check where you’re changing the TextBox’s Text property. They changed something silently about how this function operates without notifying anyone, causing my chat to break as well. I don’t know how they are doing this, let alone why not announce a breaking change like this.

1 Like

As a suggestion, you should be sending system messages in your custom chat system. This would’ve allowed players to see the error messages from Roblox and you would have noticed much faster. This is how I noticed it.

If a TextChatMessage doesn’t have a TextSource and the TextChatMessage.Metadata string starts with Roblox., it’s a Roblox system message and you should send it. You can find the reference to most of the system messages Roblox sends here if you would like to suppress some of them. Notably, it’s missing the new “age groups” system message.

Ive tried modifying my script to test this and it didnt see to change much of anything at all. Its just still not working. I did try to modify it to swap out rich text < / > signals so it wouldnt mess up the chat but I didnt think this was something that would ever break the chat? I took out all the fancy parts of my script and fed the sendasync the textbox’s text property directly but its still not working.

Having tested some prints on IncomingMessage - it returns an empty metadata. Which I imagine to be from the text im sending, then one that has a status of unknown.

using the code

TTS.OnIncomingMessage = function(A)
	print(A, "1");
	print(A.Metadata, "2");
	print(A.Text, "3");
	print(A.Status, "3");
end

and a simple

TTS.Channels[Channel]:SendAsync(ChatBar.Text);

So I dont think that was it unless im doing something wrong?

1 Like

Using your examples, I tried

local TXT = ChatBar.Text;
TTS.Channels[Channel]:SendAsync(TXT);
ChatBar.Text = "";

and it still yields the exact same results. It just doesnt work.

1 Like

I should mention that users did verify in my game to me that their messages do eventually end up going through but only WAAYYY later, most reporting around 10 ~ 15 minutes.

Thanks for sharing, I was able to test and verify my examples using only Roblox Studio when I posted them, and didn’t have to even test on live servers. I’m not sure what the difference between ours is then.

I’m gonna keep messing around and see if I can provide more insight

I’ve tested out and can confirm what I’ve written to be true, you can test it in this example place:
chat-test.rbxl (61.8 KB)

As expected, this example should work fine:

local message = textbox.Text
channel:SendAsync(message)
textbox.Text = ""

However, all of these will have Roblox send you the system message “Your message could not be sent.”:

-- by itself
channel:SendAsync("hello")
-- using a variable
local message = "hello"
channel:SendAsync(message)
-- performing concatenation
local message = textbox.Text .. "a"
channel:SendAsync(message)
textbox.Text = ""
-- this will fail only if the string changes
local message = textbox.Text:gsub("a", "b")
channel:SendAsync(message)
textbox.Text = ""
-- manually changing the TextBox's text, then setting the variable
textbox.Text = "hello"
local message = textbox.Text
channel:SendAsync(message)
textbox.Text = ""

As you can see, it seems very intentional that only the first one works and they broke the others, but they didn’t announce anything about this breaking change. Your custom chat solution is probably pretty complex so you should rework your TextBox/chat handling solution to be more simple so that messages can be sent. When you try this, do you see the results that I see, or is it just me?

Example of working code:


And code that will fail. Notice that only strings which were changed by the gsub get blocked.

Is it possible that you provide a test place replicating what you’re describing? Because I can’t seem to get the results that you’re getting. Do you have any specific TextChatService settings that might be contributing to this bug?

ChatBar.FocusLost:Connect(function(Enter)
	if ChatBar.Visible and Enter then
		TTS.Channels[Channel]:SendAsync(ChatBar.Text);
		ChatBar.Text = "";
	end
end)

I mean I went even further and stripped it all down to just this. Nothing here is doing anything different.

As you can see in the video its just that. I have all of roblox’s default chat things disabled. Truthfully I think we are having different issues and would like Roblox staff too at this point just give a clear reason why its not. We shouldnt have to guess what changed made something mysteriously stop working.

1 Like

I absolutely agree with you as someone who has to deal with the consequences of using a custom chat and a game which relies on the filter, every few months out of nowhere, with no prior warning.

Your implementation definitely is vanilla, even more so than mine which also got broken. Also make sure you really don’t have anything which cleans the text on the client either, such as:
image
If you change the TextBox’s Text at any point even just to clean stuff, it will cause the error. Which I’m now noticing I’m doing in my game to ensure people don’t type double-spaces. Ugh. And I haven’t tested on mobile… and I’m implementing a custom keyboard… :upside_down_face:

I hope staff members are reading this. This is awful if intentional. And I’m sorry to say that I really really lerlealr lyllrl ealr lealrlealy really have a feeling it is.

1 Like

Honestly its stressing me out beyond my means, im just going to take the weekend off until I get that response from staff.

Can confirm this is an issue and seems to affect pretty much every game atm. I’ve joined a few big titles like creatures of sonaria or various “brain rot” front page games and doing things like double spaces or tabs routinely causes messages to fail to send. Happening in our game Warrior Cats: Ultimate Edition as well.

4 Likes

I used to play that game!!! But yeah, its getting more concerning to me seeing the silence no this topic. REALLY hope to get an answer soon..

If it is the same game, forgive me, I searched youtube for warrior cat answers... :(((

Hello everyone, thank you all for your patience. We recently made a change to TextChannel:SendAsync so that only messages that have been recently typed and sent by the user are delivered to other users, and have updated the TextChannel:SendAsync() documentation to reflect that coming change.

We have temporarily rolled back this change to investigate potential issues, with the plan of rolling it out again once these issues are fixed.

1 Like

So does this mean this is whats going to become the norm going forward?? Im going to revert to give back the custom chat for my game as it has a some features I spent time on to help immerse people in Roleplaying as their game characters.

I really hope this wont be how it is in the future as I would have to can the whole thing which kind of really hurts to think about.

Hey, I am one of the people who had some issues with this update (SendAsync not working when sending empty strings with metadata). I was able to move some chat features to remote events, but one feature I need supported is message history. Basically, if you open chat, every time you press the up arrow you see older messages that were sent, and you can send them again. This is a neat feature; can we have it supported? Basically, a game client would be able to send a message as a player that was already sent by the player in the same session.