TextChatMessageProperties Overriding Bubblechat's Text Color by RichText

I managed to find a workaround for this bug in case anyone was coming across this and needed one. It’s pretty dirty but it works. Basically what you have to do is decouple TextChatService.OnIncomingMessage and TextChatService.OnBubbleAdded by first disabling TextChatService.BubbleChatConfiguration and TextChatService.BubbleChatConfiguration.Enabled, then on TextChatService.MessageReceived, strip the message of its rich text tags, then call textChatService:DisplayBubble, which will then invoke TextChatService.OnBubbleAdded, where you can do your bubble chat configuration.

Example (first set TextChatService.BubbleChatConfiguration.Enabled to false):

local players = game:GetService('Players')
local textChatService = game:GetService('TextChatService')

game:GetService('Chat').BubbleChatEnabled = false

function textChatService.OnIncomingMessage(message: TextChatMessage)
	local source = message.TextSource

	if not source then
		return
	end

	local player = players:GetPlayerByUserId(source.UserId)

	if not player then
		return
	end

	local messageProperties = Instance.new('TextChatMessageProperties')
	messageProperties.PrefixText = `<font color="#ff00ff">{ message.PrefixText }</font>`
	messageProperties.Text = `<font color="#ffff00">{message.Text}</font>`

	return messageProperties
end

textChatService.MessageReceived:Connect(function(message)
	local source = message.TextSource

	if not source then
		return
	end

	local user = players:GetPlayerByUserId(source.UserId)

	if not user then
		return
	end

	local character = user.Character
	if not character then
		return
	end

	textChatService:DisplayBubble(character, message.Text:gsub("<[^<>]->", ""))
end)

function textChatService.OnBubbleAdded(message, adornee)
	if not adornee then 
		return
	end

	local player = players:GetPlayerFromCharacter(adornee)

	if not player then
		return
	end

	local properties = Instance.new('BubbleChatMessageProperties')

	properties.BackgroundColor3 = Color3.new(0, 1, 0)
	properties.TextColor3 = Color3.new(1, 1, 1)

	return properties
end

This will result in:

6 Likes