I recently got a commission where I ironed out a few bugs. I was able to get most of them, but this one I just couldn’t place.
When one joins the game and the chat opens, the channel tabs are just… gone. The issue used to occur only on mobile, but now it happens on desktop as well. Here’s a screenshot:
There should be the channel tabs “All” and “System”. There’s no errors in the Output or anything, but I think the bug is coming from this part of this module (I didn’t make it):
ChatSettings.WindowChatSettings = {
--// Chat Behavior \\--
WindowDraggable = false, -- Determine whether clients can freely move their chat windows. // Type: Boolean // Default: False
WindowResizable = false, -- Spawns a tab in the bottom-right corner of the chat window, allowing the user to push or pull it to change the size of their chat window. // Type: Boolean // Default: False
ShowChannelsBar = true, --A list of non-private chat channels will be shown at the top of the chat window. Further behaviour modifications available. // Type: Boolean // Default: False
GamepadNavigationEnabled = false, --This allows for navigation of the chat window with game pads. A strong doubt you’d ever need it, but someone may. // Type: Boolean // Default: False
AllowMeCommand = false, --Enable the dreaded /me [text] command for players to use. Added due to abuse by bad actors. // Type: Boolean // Default: False
ShowUserOwnFilteredMessage = true, --Determines if users see their own messages as filtered or not. Still appear filtered to other users. You should probably just leave this alone. // Type: Boolean // Default: True
ChatOnWithTopBarOff = true, -- If you ever use SetCore(“TopbarEnabled”, false) but want the chat to still work, this is for you. // Type: Boolean // Default: False
ScreenGuiDisplayOrder = 6, --Modifies the order of display for the ScreenGui. You probably won’t need to touch this. // Type: Number // Default: 6
ShowFriendJoinNotification = true, --Will send a message to your window if a friend joins your game. // Type: Boolean // Default: True
BubbleChatEnabled = true, --Enables BubbleChat. Self explanatory. // Type: Boolean // Default: True
ClassicChatEnabled = true, --Enables ClassicChat. // Type: Boolean // Default: True
--// Text \\--
ChatWindowTextSize = 18, --Size of chats in the chat area. // Type: Number // Default: 18
ChatChannelsTabTextSize = 18, --Size of the channel labels. // Type: Number // Default: 18
ChatBarTextSize = 18, --Size of the text you type in the bar. // Type: Number // Default: 18
ChatWindowTextSizePhone = 14, --ChatWindowTextSize for mobile. // Type: Number // Default: 14
ChatChannelsTabTextSizePhone = 18, --ChatChannelsTabTextSize for mobile. // Type: Number // Default: 18
ChatBarTextSizePhone = 16, --ChatBarTextSize for mobile. // Type: Number // Default: 14
--// Font \\--
DefaultFont = Enum.Font.SourceSansBold, --Universal font. // Type: Enum.Font // Default: SourceSansBold
ChatBarFont = Enum.Font.SourceSansBold, --Font for the chat bar. // Type: Enum.Font // Default: SourceSansBold
--// Colors \\--
BackGroundColor = Color3.new(0, 0, 0), --Chat window background. // Type: Color3 // Default: new(0, 0, 0)
DefaultMessageColor = Color3.new(1, 1, 1), --Default message colour if ExtraData not set. // Type: Color3 // Default: new(1, 1, 1)
DefaultNameColor = Color3.new(1,1,1), --Default name colour if ExtraData not set. // Type: // Color3 // Default: new(1, 1, 1)
ChatBarBackGroundColor = Color3.new(0, 0, 0), --Background surrounding chat bar. // Type: Color3 // Default: new(0, 0, 0)
ChatBarBoxColor = Color3.new(1, 1, 1), --Actual chat box. // Type: // Default: Color3 new(1, 1, 1)
ChatBarTextColor = Color3.new(0, 0, 0), --Text inputted into the chat bar. // Type: Color3 // Default: new(0, 0, 0)
ChannelsTabUnselectedColor = Color3.new(0, 0, 0), --Unselected channels. Use if ShowChannelsBar is on. // Type: Color3 // Default: new(0, 0, 0)
ChannelsTabSelectedColor = Color3.fromRGB(30, 30, 30), --Same as above, except for a selected channel. // Type: Color3 // Default: fromRGB(30, 30, 30)
DefaultChannelNameColor = Color3.fromRGB(35, 76, 142), --Self explanatory. // Type: Color3 // Default: fromRGB(35, 76, 142)
WhisperChannelNameColor = Color3.fromRGB(102, 14, 102), --Channel when a whisper is open. // Type: Color3 // Default: fromRGB(102, 14, 102)
ErrorMessageTextColor = Color3.fromRGB(245, 50, 50), --Errors sent in the chat area. // Type: Color3 // fromRGB(245, 50, 50)
--// Window \\--
MinimumWindowSize = UDim2.new(0.3, 0, 0.25, 0), --Type: UDim2 // Default: {0.3, 0}, {0.25, 0}
MaximumWindowSize = UDim2.new(1, 0, 1, 0), --Type: UDim2 // Default: {1, 0}, {1, 0}
DefaultWindowPosition = UDim2.new(0, 0, 0, 0), --Type: UDim2 // Default: {0, 0}, {0, 0}
extraOffset = 24, --Calculation to fit chat bar. // Type: Number // Default: (7 * 2) + (5 * 2) or 24
DefaultWindowSizePhone = UDim2.new(0.4, 0, 0.45, 24), --Type: UDim2 // Default: {0.5, 0}, {0.5, extraOffset}
DefaultWindowSizeTablet = UDim2.new(0.4, 0, 0.45, 24), --Type: UDim2 // Default: {0.4, 0}, {0.3, extraOffset}
DefaultWindowSizeDesktop = UDim2.new(0.4, 0, 0.45, 24), --Type: UDim2 // Default: {0.3, 0}, {0.25, extraOffset}
--// Fade \\--
ChatWindowBackgroundFadeOutTime = 0.5, --Time until background fades. // Type: Number // Default: 0.5
ChatWindowTextFadeOutTime = 30, --Time before window fades if no interaction with the chat window is made. // Type: Number // 30
ChatDefaultFadeDuration = 0.8, --How long fades last. // Type: Number // Default: 0.8
ChatShouldFadeInFromNewInformation = false, --Show chat if new information is sent. // Type: Boolean // Default: False
ChatAnimationFPS = 20, --Type: Number // Default: 20.0
--// Channel \\--
GeneralChannelName = "All", --Main chat room. Set to nil to remove or another string for a new name. Allows you to manage chatting yourself by adding your own channels. // Type: String or nil // Default: All
EchoMessagesInGeneralChannel = true,--Determines if messages from other channels should show up in the general channel. Set to false if ShowChannelsBar is true to keep messages in their respective rooms. // Type: Boolean // Default: True
ChannelsBarFullTabSize = 6,--Number of channels that can be fit into the bar before scrolling enables. // Type: Number // Default: 4
MaxChannelNameLength = 12, --Maximum characters a channel name can have. // Type: Number // Default: 12
RightClickToLeaveChannelEnabled = false, --Use with ShowChannelsBar as true. Self explanatory. // Type: Boolean // Default: False
MessageHistoryLengthPerChannel = 50, --How many messages are shown before old chats are deleted. // Type: Number // Default: 50
ShowJoinAndLeaveHelpText = false, --If help text for joining and leaving channels should be shown. Useful only for custom channels. // Type: Boolean // Default: False
--// Message \\--
MaximumMessageLength = 200, --Maximum characters in a chat line. Probably should leave this alone. // Type: Number // Default: 200
DisallowedWhiteSpace = {}, --Prevent this type of whitespace from being entered into chats. // Type: Table // Default: {n, r, t, v, f}
ClickOnPlayerNameToWhisper = true, --Clicking on a name enters a whisper channel with the other player. // Type: Boolean // Default: True
ClickOnChannelNameToSetMainChannel = true, --Click a channel to change to it. // Type: Boolean // Default: True
--// Misc \\--
WhisperCommandAutoCompletePlayerNames = true --Typing /w [partialName] autocompletes and enters a whisper with that user. // Type: Boolean // Default: True
}
Here’s what runs it (client-side):
if not game:IsLoaded() then
game.Loaded:Wait()
end
local Chat = game:GetService("Chat")
local SettingsModule = require(game:GetService("ReplicatedStorage"):WaitForChild("ChatSettings"))
--// Normal Chat \\--
Chat:RegisterChatCallback(Enum.ChatCallbackType.OnCreatingChatWindow, function()
task.wait(1) -- I added this but it didn't seem to do anything. (Ty_Scripts)
return SettingsModule.WindowChatSettings
end)
Anyone have any idea what’s going on here? There’s potentially other scripts causing this, I can show them on request.