Class
Chat
NotCreatableServiceNotReplicatedDeprecated
Houses the Luau code responsible for running the legacy chat system.
Deprecated. This class is deprecated. Use TextChatService instead.
The Chat service houses the Luau code responsible for running the
legacy chat system.
Similar to StarterPlayerScripts, default objects like
Scripts and ModuleScripts are inserted
into the service.
Properties 2#
BubbleChatEnabledboolean | Determines whether player's chat messages will appear above their in-game avatar.ReadSafe |
LoadDefaultChatboolean | Toggles whether the default chat framework should be automatically loaded when the game runs.Write: NotAccessibleSecurityReadSafe |
BubbleChatEnabled: boolean#
ReadSafe
If true, entering a message in the chat will result in a chat bubble
popping up above the player's Player.Character. This behavior can
either be enabled by directly ticking this checkbox in Studio, or by using
a LocalScript:
local ChatService = game:GetService("Chat")
ChatService.BubbleChatEnabled = trueThis must be done on the client, toggling this value in a server-side
Script will have no effect.
LoadDefaultChat: boolean#
Write: NotAccessibleSecurityReadSafe
When set to true (the default), the engine inserts the default Luau chat
system scripts (such as ChatScript and BubbleChat) into the Chat
service at runtime. Setting this to false prevents the legacy chat
framework from loading, which is useful if you are replacing it with a
custom chat implementation or migrating to TextChatService.
This property defaults to true. It is not writable by scripts at
runtime.
Methods 9#
| CanUserChatAsync | Will return false if the player with the specified Player.UserId
is not allowed to chat because of their account settings.Yields |
| CanUsersChatAsync | Will return false if the two users cannot communicate because their account settings do not allow it.Yields |
| Chat | Fires the Chat.Chatted event with the parameters specified in this
method. |
| FilterStringAsync | Filters a string sent from a player to another player using filtering that is appropriate to the players' account settings.Yields |
| FilterStringForBroadcast | Filters a string sent from a player meant for broadcast to no particular
target. More restrictive than Chat:FilterStringAsync().Yields |
| FilterStringForPlayerAsync | Filters a string appropriate to the given player's age settings, so they see what is appropriate to them.DeprecatedYields |
| InvokeChatCallback | Invoke a chat callback function registered by
RegisterChatCallback. Used by the Luau
Chat System. |
| RegisterChatCallback | Register a function to be called upon the invocation of some chat system
event (InvokeChatCallback). |
| SetBubbleChatSettings | Customizes various settings of the in-game bubble chat. |
CanUserChatAsync(userId: int64): boolean#
Yields
Returns whether the player identified by userId is permitted to use
in-game text chat. The check evaluates the player's chat privacy mode,
third-party platform restrictions, and any active moderation timeouts.
On the server, the specified player must be connected to the current
server; otherwise the call errors. On the client, the method must be
called only for the local player's Player.UserId.
| Name | Type | Default | Description |
|---|---|---|---|
userId | int64 |
Returns
boolean
CanUsersChatAsync(userIdFrom: int64, userIdTo: int64): boolean#
Yields
Returns whether two players are permitted to exchange chat messages with each other. The method evaluates user blocking, age-based communication constraints, and chat privacy mode compatibility between the two accounts.
This method can only be called from server-side Scripts.
Both players must be connected to the current server; otherwise the call
errors.
| Name | Type | Default | Description |
|---|---|---|---|
userIdFrom | int64 | ||
userIdTo | int64 |
Returns
boolean
Chat(partOrCharacter: Instance, message: string, color: ChatColor = Blue): ()#
The Chat function fires the Chat.Chatted event with the parameters
specified in this method.
By default, there is a LocalScript inside of each player's
PlayerScripts object named BubbleChat, which causes a
dialog-like billboard to appear above the partOrCharacter when the
chatted event is fired.
Note: Since dialogs are controlled by a LocalScript, you will not be able to see any dialogs created from this method unless you are running in Play Solo mode.
| Name | Type | Default | Description |
|---|---|---|---|
partOrCharacter | Instance | An instance that is the part or character which the BubbleChat dialog should appear above. | |
message | string | The message string being chatted. | |
color | ChatColor | Blue | An ChatColor specifying the color of the chatted message. |
Returns
()
FilterStringAsync(stringToFilter: string, playerFrom: Player, playerTo: Player): string#
Yields
Partial Deprecation Warning: Calling this function from the client
using a LocalScript is deprecated, and will be disabled in the
future. Text filtering should be done from a Script on the server
using the similarly-named TextService:FilterStringAsync(), which
uses a different set of parameters and return type.
Games that do not properly filter player-generated text might be subject to moderation action. Please be sure a game properly filters text before publishing it.
FilterStringAsync filters a string using filtering that is appropriate for the sending and receiving player. If the filtered string is to be used for a persistent message, such as the name of a shop, writing on a plaque, etc, then the function should be called with the author as both the sender and receiver.
This function should be used every time a player can enter custom text
in any context, most commonly using a TextBox. Some examples
of text to be filtered:
- Custom chat messages
- Custom character names
- Names for a shop in a tycoon-style game
| Name | Type | Default | Description |
|---|---|---|---|
stringToFilter | string | The raw string to be filtered, exactly as entered by the player. | |
playerFrom | Player | The author of the text. | |
playerTo | Player | The intended recipient of the provided text; use the author if the text is persistent (see description). |
Returns
string
FilterStringForBroadcast(stringToFilter: string, playerFrom: Player): string#
Yields
Filters a string sent from playerFrom for broadcast to no particular
target. The filtered message has more restrictions than
Chat:FilterStringAsync().
Some examples of where this method could be used:
- Message walls
- Cross-server shouts
- User-created signs
Calling FilterString from LocalScripts is deprecated
and will be disabled in the future. Text filtering should be done from
server-side Scripts using FilterStringAsync.
Note: A game not using this filter function for custom chat or other user generated text may be subjected to moderation action.
| Name | Type | Default | Description |
|---|---|---|---|
stringToFilter | string | Message string being filtered. | |
playerFrom | Player | Instance of the player sending the message. |
Returns
string— Filtered message string.
FilterStringForPlayerAsync(stringToFilter: string, playerToFilterFor: Player): string#
YieldsDeprecatedDeprecated
Deprecated. This item has been superseded by Chat:FilterStringAsync() and
Chat:FilterStringForBroadcast() which should be used in all new
work
The FilterStringForPlayerAsync function filters a string appropriate to
the given player's age settings, so they see what is appropriate to them.
This function will only work if called from a Script on the
server. If called on a client it will fail.
| Name | Type | Default | Description |
|---|---|---|---|
stringToFilter | string | String being filtered. | |
playerToFilterFor | Player | Player that the string is being filtered for. |
Returns
string— Filtered string result.
InvokeChatCallback(callbackType: ChatCallbackType, callbackArguments: Tuple): Tuple#
InvokeChatCallback will call a function registered by
RegisterChatCallback, given the
ChatCallbackType enum and the arguments to send the function. It will
return the result of the registered function, or raise an error if no
function has been registered.
This function is called by the Luau Chat System so that chat callbacks may
be registered to change the behavior of certain features. Unless you are
replacing the default Luau Chat System with your own, you should not need
to call this function. You can read about the different callback functions
at Chat:RegisterChatCallback().
| Name | Type | Default | Description |
|---|---|---|---|
callbackType | ChatCallbackType | The type of callback to invoke. | |
callbackArguments | Tuple | The arguments that will be sent to the registered callback function. |
Returns
Tuple— The values returned by the function registered to the given ChatCallbackType.
RegisterChatCallback(callbackType: ChatCallbackType, callbackFunction: Function): ()#
RegisterChatCallback binds a function to some chat system event in order
to affect the behavior of the Luau chat system. The first argument
determines the event (using the ChatCallbackType enum) to which the
second argument, the function, shall be bound. The default Luau chat
system uses InvokeChatCallback to invoke
registered functions. Attempting to register a server- or client- only
callback on a peer that isn't a server or client respectively will raise
an error. The following sections describe in what ways registered
functions will be used.
OnCreatingChatWindow#
Client-only. Invoked before the client constructs the chat window. Must return a table of settings to be merged into the information returned by the ChatSettings module.
OnClientFormattingMessage#
Client-only. Invoked before the client displays a message (whether it is a
player chat message, system message, or /me command). This function is
invoked with the message object and may (or may not) return a table to be
merged into message.ExtraData.
OnClientSendingMessage#
Not invoked at this time.
OnServerReceivingMessage#
Server-only. Invoked when the server receives a message from a speaker
(note that speakers may not necessarily be a Player chatting).
This callback is called with the Message object. The function can make
changes to the Message object to change the manner in which the message is
processed. The Message object must be returned for this callback to do
anything. Setting this callback can allow the server to, for example:
- Set
message.ShouldDeliverto false in order to cancel delivery of the message to players (useful for implementing a chat exclusion list) - Get/set the speaker's name color (
message.ExtraData.NameColor, a Color3) on a message-by-message basis
| Name | Type | Default | Description |
|---|---|---|---|
callbackType | ChatCallbackType | The callback to which the function shall be registered (this determines in what way the function is called). | |
callbackFunction | Function | The function to call when the callback is invoked using Chat:InvokeChatCallback. |
Returns
()
SetBubbleChatSettings(settings: Variant): ()#
This function customizes various settings of the in-game bubble chat.
Before using this, make sure that bubble chat is enabled by setting
Chat.BubbleChatEnabled to true.
The settings argument is a table where the keys are the names of the settings you want to edit and the values are what you want to change these settings to. Note that you don't have to include all of them in the settings argument, omitting some will result in them keeping their default value.
This function is client-side only, attempting to call it on the server will trigger an error.
| Name | Type | Default | Description |
|---|---|---|---|
settings | Variant | A settings table. |
Returns
()
Events 1#
| Chatted | Fires when Chat:Chat() is called. |
Chatted(part: Instance, message: string, color: ChatColor)#
Fires when Chat:Chat() is called. The event passes the part or
character the message is associated with, the message string, and the
ChatColor. When fired on the server, the event replicates to all
connected clients. The default BubbleChat LocalScript listens
for this event and displays a chat bubble above the specified part or
character.
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild