TextChatService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Un servicio que maneja el chat de texto en experiencia, incluyendo managing channels , decorar mensajes, filtrar texto, creating commands , y desarrollar interfaces de chat personalizadas .
Para obtener más información, vea Visión general de TextChatService.
Para una mayor personalización, TextChatService tiene los siguientes hijos únicos:
Resumen
Propiedades
Determina si la traducción de chat está habilitada.
Determina si se debe habilitar completamente TextChatService o volver al sistema de chat legado.
Determina si TextChatService debe crear el predeterminado TextChatCommands .
Determina si TextChatService debe crear el predeterminado TextChannels .
Métodos
Muestra una burbuja de chat por encima de la parte o personaje de jugador proporcionado.
Determina si un usuario tiene permiso para chatear en experiencias.
Determina si dos usuarios recibirían o no mensajes entre sí.
Determina si un usuario tiene permiso para chatear directamente con otros usuarios en experiencias basadas en factores como sus configuraciones de control parental.
Eventos
Se enciende cuando se llama TextChatService:DisplayBubble().
Se activa cuando TextChannel:DisplaySystemMessage() se invoca en el cliente, o cuando el cliente recibe una respuesta válida de TextChannel:SendAsync() del servidor.
Se enciende cuando TextChannel:SendAsync() se llama por el cliente de envío.
Llamadas
Se llama cuando un chat de burbujas está a punto de ser mostrado.
Se llama cuando un nuevo mensaje está a punto de ser mostrado en la ventana de chat. Esto solo se puede implementar en el cliente.
Se llama cuando TextChatService recibe un mensaje entrante.
Propiedades
ChatTranslationEnabled
Determina si la traducción de chat está habilitada.Si es verdad, un mensaje del sistema notificará al jugador cuando se una por primera vez que los mensajes de chat se pueden traducir al idioma preferido del jugador.
ChatVersion
Determina si se debe habilitar completamente TextChatService o volver al sistema de chat legado.Establecer esta propiedad a Enum.ChatVersion.LegacyChatService efectivamente desactiva TextChatService .
CreateDefaultCommands
Determina si TextChatService debe crear el predeterminado TextChatCommands .
Si es verdad, se crean y ponen en un llamado TextChatCommands dentro de :
<th>Aliases primarios</th><th>Alias secundario</th><th>Descripción</th><th>Ejemplo de uso</th></tr></thead><tbody><tr><td><b>Comando RBXClear</b></td><td>borrar</td><td>clk</td><td>Limpia el registro de chat para el usuario local.</td><td><code>/cls</code></td></tr><tr><td><b>Comando de consola RBX</b></td><td>consola</td><td /><td>Abre la consola del desarrollador.</td><td><code>/console</code></td></tr><tr><td><b>Comando de emote RBX</b></td><td>emote</td><td>e</td><td>Reproduce un emote de avatar.</td><td><code>/e danza</code></td></tr><tr><td><b>Comando de ayuda RBX</b></td><td>ayuda</td><td>?</td><td>Muestra una lista de comandos de chat.</td><td><code>/ayuda</code></td></tr><tr><td><b>Comando RBXMute</b></td><td>silenciar</td><td>m</td><td>Silencia a un usuario por su <code>Clase.Player.Name|Nombre</code> o <code>Clase.Player.DisplayName|Nombre</code> en todas las <code>Clase.TextChannel|TextChannels</code>.</td><td><code>/m Nombre de usuario</code></td></tr><tr><td><b>Comando de equipo RBX</b></td><td>equipo</td><td>t</td><td>Entra en el modo de chat de equipo donde los mensajes solo son visibles para los compañeros de equipo.</td><td><code>/t</code></td></tr><tr><td><b>Comando de desactivar RBX</b></td><td>desilenciar</td><td>um</td><td>Silencia a un usuario por su <code>Class.Player.Name|Name</code> o <code>Class.Player.DisplayName|DisplayName</code> en todos los <code>Class.TextChannel|TextChannels</code>.</td><td><code>/um Nombre de usuario</code></td></tr><tr><td><b>Comando RBXVersion</b></td><td>versión</td><td>v</td><td>Muestra la versión de chat.</td><td><code>/versión</code></td></tr><tr><td><b>Comando RBXWhisper</b></td><td>susurrar</td><td>w</td><td>Entra en modo susurro con otro <code>Class.Player</code>.</td><td><code>/w DisplayName</code> o <code>/w @Username</code></td></tr></tbody>
Nombre |
---|
Tenga en cuenta que puede editar, crear y eliminar TextChatCommands incluso si CreateDefaultCommands es cierto. También tenga en cuenta que los comandos silenciar y desilenciar se aplican a todos los TextChannels .
CreateDefaultTextChannels
Determina si TextChatService debe crear el predeterminado TextChannels .Si es verdad, se crea un Folder llamado Canales de texto dentro de TextChatService en tiempo de ejecución para contener el TextChannels delineado en la tabla a continuación.Cada uno de los canales predeterminados tiene el comportamiento especial descrito aplicado a los mensajes usando su función de llamada interna TextChannel.OnIncomingMessage, que cambia la forma en que aparecen los mensajes al enviarse a través del canal.La llamada de devolución se asigna automáticamente al ejecutarse (si existe el TextChannel ) o al crearse el TextChannel .
<th>Descripción</th></tr></thead><tbody><tr><td><b>RBXGeneral</b></td><td><code>Class.TextChannel</code> para mensajes del jugador.En la ventana de chat, los mensajes se modifican para que <code>Class.TextChatMessage.PrefixText|PrefixText</code> reciba una etiqueta de color de fuente <a href="../../../ui/rich-text.md">de texto rico</a> para dar a los jugadores de chat su color distintivo.Si <code>Class.Player.Team</code> existe, ese <code>Class.Team.TeamColor</code> se usa en lugar del color de nombre predeterminado.</td></tr><tr><td><b>Sistema RBX</b></td><td><code>Class.TextChannel</code> para mensajes del sistema.En la ventana de chat, los mensajes se modifican para que <code>Class.TextChatMessage.Text</code> reciba una etiqueta de color gris claro por defecto, o una etiqueta de color rojo si <code>Class.TextChatMessage.Metadata</code> contiene la palabra <code>"Error"</code> .</td></tr><tr><td><b>RBXTeam[Color de ladrillo]</b></td><td><code>Class.TextChannel</code> para mensajes específicos del equipo, creados cuando un <code>Class.Team.TeamColor|TeamColor</code> está en uso por cualquier <code>Clase.Team</code> dentro del servicio <code>Class.Teams</code>.El nombre del canal creado es <b>RBXTeam</b> seguido por el nombre <code>Class.Team.TeamColor|TeamColor</code> .Por ejemplo, RBXTeamCrimson es un Class.TextChannel creado cuando hay un equipo activo cuya propiedad de Clase.Team.TeamColor|TeamColor es el "Crimson" Datatype.BrickColor .En la ventana de chat, se modifican los mensajes de tal manera que Class.TextChatMessage.PrefixText|PrefixText esté coloreado de acuerdo con el Clase.Player.TeamColor|TeamColor y se prefiere con [Equipo] .Los canales de equipo crean Clase.TextSource|Textources para todos los jugadores no‑ Clase.Player.Neutral|Neutral con el color coincidente, permitiéndoles usar el chat de equipo solo.Los canales se eliminan si no hay equipos restantes con una clase asociada <code>Class.Team.TeamColor|TeamColor</code>.</td></tr><tr><td><b>RBXWhisper:[UserId1]_[UserId2]</b></td><td><code>Class.TextChannel</code> para mensajes susurrados entre dos jugadores, creado cuando un jugador usa el comando <code>/whisper</code> en otro jugador.Por ejemplo, <b>RBXWhisper:2276836_505306092</b> es un <code>Class.TextChannel</code> para jugadores con <code>Class.Player.UserId|UserIds</code><b>2276836</b> y <b>505306092</b>.Dentro de los canales de susurro hay dos <code>Class.TextSource|Textources</code> asociados con el respectivo <code>Class.Player.UserId|UserIds</code> .En la ventana de chat, los mensajes se colorean igual que los de <b>RBXGeneral</b> y <code>Class.TextChatMessage.PrefixText</code> se modifica para mostrar si un mensaje fue enviado o recibido por el usuario local.Los canales de susurro se eliminan cuando cualquiera de los jugadores deja la experiencia.</td></tr></tbody>
Canal |
---|
Tenga en cuenta que los llamados de devolución predeterminados TextChannel.OnIncomingMessage se pueden reemplazar.Tenga en cuenta también que puede editar, crear y eliminar TextChannels incluso si CreateDefaultTextChannels es cierto.
Los mensajes de diferentes canales de texto se pueden separar en diferentes pestañas en la ventana de chat usando ChannelTabsConfiguration .
Métodos
DisplayBubble
Muestra una burbuja de chat por encima del personaje o parte proporcionada, y dispara el evento BubbleDisplayed con los parámetros especificados en este método.Puede mostrar burbujas para personajes no jugadores (NPC) si especifica una parte dentro del personaje, como su cabeza.
Tenga en cuenta que este método solo está disponible para su uso en LocalScript , o en un Script con RunContext de Enum.RunContext.Client .
Parámetros
La parte o el personaje que la burbuja debe mostrarse por encima.
El texto que se mostrará en la burbuja de chat.
Devuelve
CanUserChatAsync
Determina si un usuario tiene permiso para chatear en experiencias.Factores como los ajustes de control parental pueden impedir que el usuario envíe mensajes.Errores si el ID de usuario no está en el servidor actual.Tenga en cuenta que este método se puede usar con todos los jugadores actuales UserIds en un Script con RunContext de Enum.RunContext.Server o Enum.RunContext.Legacy .Este método también se puede usar en un LocalScript pero solo con el UserId del jugador local.
Parámetros
Devuelve
CanUsersChatAsync
Determina si dos usuarios recibirían o no mensajes entre sí.Los factores como los ajustes de control parental incompatibles o el estado bloqueado pueden impedir la entrega de mensajes entre usuarios TextChannels internamente use este resultado para determinar si debe enviarse mensajes entre usuarios.Tenga en cuenta que este método solo está disponible para su uso en un Script con RunContext de Enum.RunContext.Server o Enum.RunContext.Legacy .
Parámetros
Devuelve
CanUsersDirectChatAsync
Determina si un usuario tiene permiso para chatear directamente con otros usuarios en experiencias basadas en sus configuraciones de control parental. Para usar cuando:
- La línea de comunicación es iniciada por el usuario (no iniciada por el desarrollador o el juego)
- El acceso a la comunicación está cerrado y limitado
Un ejemplo de chat directo es un canal de susurro entre dos usuarios.
Puedes usar este método para habilitar ciertas características en tu experiencia dependiendo del resultado.
Al crear un TextChannel para un chat directo, use TextChannel:SetDirectChatRequester() para establecer el requesterUserId para que el canal pueda determinar si entregar mensajes entre usuarios.Cuando TextChannel.DirectChatRequester no es nulo, TextChannels utiliza internamente este resultado para determinar si debe enviarse mensajes entre usuarios.
local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })if #whoCanDirectChat > 0 then-- El requerenteUserId puede dirigir el chat con cualquiera de los ID de usuario siguientes: userId1, userId2, o amboselse-- El solicitante URI no puede dirigir el chat con ninguno de los ID de usuario #{1} o #{2}end
Tenga en cuenta que este método solo está disponible para su uso en un Script con RunContext de Enum.RunContext.Server o Enum.RunContext.Legacy .
Parámetros
El usuario que habría iniciado la solicitud de chat directo. Si el requerenteUserId no está en el servidor actual, este método fallará.
Una lista de usuarios con los que el solicitante URI gustaría chatear directamente. Los usuarios que no están en el servidor actual se ignoran.
Devuelve
Una lista de usuarios que podrían participar en la solicitud de chat directo.Si ninguno de los usuarios puede dirigir el chat con el requesterUserId, el resultado es un matriz/listavacío.
Muestras de código
This example checks if two users can chat, creates a new TextChannel, and adds them to it.
local TextChatService = game:GetService("TextChatService")
local directChatParticipants = TextChatService:CanUsersDirectChatAsync(userId1, { userId2 })
-- Check for eligible participants
if #directChatParticipants > 0 then
local directChannel = Instance.new("TextChannel")
directChannel.Parent = TextChatService
for _, participant in directChatParticipants do
directChannel:AddUserAsync(participant)
end
return directChannel
end
warn("Could not create TextChannel. Not enough eligible users.")
return nil
Eventos
MessageReceived
Como TextChannel.MessageReceived , se activa cuando TextChannel:DisplaySystemMessage() se invoca en el cliente, o cuando el cliente recibe una respuesta válida de TextChannel:SendAsync() del servidor.Este evento solo se dispara en el cliente.
Si la propiedad TextChannel.ShouldDeliverCallback del servidor está vinculada y devuelve false, el cliente no disparará TextChatService.MessageReceived.
Usa el parámetro TextChatMessage para obtener el TextSource y el texto del mensaje (con TextChatMessage.Text).
El parámetro TextChatMessage es el resultado final de cualquier función vinculada a TextChatService.OnIncomingMessage o TextChannel.OnIncomingMessage.
Parámetros
El recibido TextChatMessage .
SendingMessage
Se enciende cuando TextChannel:SendAsync() se llama por el cliente de envío.Usa esto para permitir que se muestren mensajes de marcador al usuario mientras espera la respuesta del servidor a TextChannel:SendAsync() .
Parámetros
El TextChatMessage de la llamada TextChannel:SendAsync().
Llamadas
OnBubbleAdded
Se llama cuando un chat de burbujas está a punto de ser mostrado. Esto solo se puede implementar en el cliente.
Usa esto para personalizar mensajes de chat de burbujas individuales.Si esta llamada de devolución devuelve un BubbleChatMessageProperties , esas propiedades se aplicarán a la burbuja asociada, reemplazando las propiedades BubbleChatConfiguration.Si un UICorner , UIGradient , o ImageLabel es patrocinado bajo BubbleChatMessageProperties , también anularán sus respectivas contrapartes definidas en BubbleChatConfiguration .
Si el mensaje de chat es enviado por un jugador, message.TextSource corresponderá a ese jugador, y adornee será nil .
Si el mensaje de chat se envía a través de TextChatService:DisplayBubble() , adornee será el partOrCharacter proporcionado, y message.TextSource será nil .
Cuando se vincula al cliente que envía un mensaje, este llamado de devolución se ejecuta dos veces: primero cuando el mensaje se envía y recibe inicialmente localmente, luego nuevamente cuando el cliente recibe el resultado del mensaje filtrado del servidor.
Parámetros
El entrante TextChatMessage .
La parte o el personaje al que se le adjunta el mensaje de chat de burbuja.
Devuelve
Si se devuelve un BubbleChatMessageProperties, sus propiedades anulan las propiedades de BubbleChatConfiguration.
OnChatWindowAdded
Se llama cuando un nuevo mensaje está a punto de ser mostrado en la ventana de chat. Esto solo se puede implementar en el cliente.
Usa esto para personalizar mensajes individuales que aparecen en la ventana de chat.Si esta llamada de devolución devuelve un ChatWindowMessageProperties , esas propiedades se aplicarán al mensaje asociado, reemplazando las propiedades ChatWindowConfiguration.Si un UIGradient es padre bajo ChatWindowMessageProperties , también anulará la propiedad TextColor3 definida en ChatWindowConfiguration.
Cuando se vincula al cliente que envía un mensaje, este llamado de devolución se ejecuta dos veces: primero cuando el mensaje se envía y recibe inicialmente localmente, luego nuevamente cuando el cliente recibe el resultado del mensaje filtrado del servidor.
Parámetros
El entrante TextChatMessage .
Devuelve
Si se devuelve un ChatWindowMessageProperties, sus propiedades anulan las propiedades de ChatWindowConfiguration.
OnIncomingMessage
Se llama cuando TextChatService recibe un mensaje entrante. Solo se puede implementar en el cliente.
Usa esto para decorar TextChatMessages .Si esta llamada de devolución devuelve un TextChatMessageProperties , esas propiedades se fusionan con el parámetro TextChatMessage para crear un nuevo TextChatMessage.
Cuando se vincula al cliente que envía un mensaje, este llamado de devolución se ejecuta dos veces; primero cuando el mensaje se envía y recibe inicialmente localmente, y nuevamente cuando el cliente recibe el resultado del mensaje filtrado del servidor.
Tenga en cuenta que esta llamada de devolución TextChatService.OnIncomingMessage ejecuta antes de cualquier llamada de devolución TextChannel.OnIncomingMessage.
Esto debe definirse solo una vez en el código fuente. Las múltiples dependencias anularán una a otra de manera no determinista.
Parámetros
El entrante TextChatMessage .
Devuelve
Si se devuelve un TextChatMessageProperties se fusionan esas propiedades con el parámetro TextChatMessage para crear un nuevo TextChatMessage con esas propiedades, de lo contrario, si se devuelve nil entonces TextChatMessage no se cambia.