Puede usar los siguientes módulos de chat para apoyar los comportamientos del lado del servidor del Sistema de chat legado incluyendo:
- ChatService : Un singleton que maneja todos los demás módulos de chat.
- ChatSpeaker : Entidad que puede crear mensajes en un ChatChannel; cada Player tendrá automáticamente un ChatSpeaker y los bots pueden chatear al crear ChatSpeakers.
- ChatMessage : Contenedor para el contenido que envía un hablante en un canal de chat; contiene metadatos utilizados para formatear el mensaje o agregar funciones adicionales a los comandos.
- Canal de chat : Un canal por el cual los hablantes de chat pueden intercambiar mensajes de chat; también se usa para el chat de equipo y el chat de susurro.
Servicio de chat
ChatService es un objeto de interfaz de usuario que maneja el comportamiento del lado del servidor del sistema de chat Lua, como ChatChannels y ChatSpeakers.
Todo ModuleScript s dentro de la carpeta ChatModuleScript debería devolver una función, y esa función se llamará con el singleton de ChatService.
Métodos
Añadir canal
- Descripción: Crear un objeto de ChatChannel con el nombre dado y devolverlo.
- Retornos: ChatChannel
Eliminar canal
- Descripción: Elimina un canal con el nombre dado
- Retornos: nulo
Obtener canal
- Descripción: Regresa el canal con el nombre dado, o nulo si no existe.
- Retornos: ChatChannel
Añadir altavoces
- Descripción: Crear y agregar un orador al chat con el nombre dado, luego lo devuelve.
- Retornos: Hablante del Chat
Eliminar altavoces
- Descripción: Elimina al orador del chat con el nombre dado.
- Retornos: nulo
Obtener altavoz
- Descripción: Devuelve el orador con el nombre dado, o nulo si no existe.
- Retornos: Hablante del Chat
Obtener lista de canales
- Parámetros: ninguno
- Descripción: Muestra una lista de los nombres de todos los canales no privados en el chat.
- Retornos: array< string >
Obtener la lista de canales automáticos
- Parámetros: ninguno
- Descripción: Muestra una lista de los nombres de todos los canales en el chat con AutoJoin configurado como verdadero.
- Retornos: array< string >
Registrar filtro de mensaje
- Descripción: Registra una función de filtro en el chat identificado por functionId . Cualquier cambio en el mensaje persistirá y se mostrará cuando el mensaje se envíe a través de todas las otras funciones de filtro. Esta función se pasa el nombre del bocina, el objeto del mensaje y el canal en el que se originó el mensaje.
- Retornos: nulo
- Ejemplo:
-- Pega este ejemplo en unModuleScript dentro de la carpeta ChatModule.
-- Este ejemplo filtra una palabra clave, y si es exitoso, establece el color de chat del mensaje
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verde
local function doFilter(speaker, messageObject, channelName)
-- Compruebe si el mensaje contiene la palabra clave
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Elimina (filtro) la palabra clave del mensaje, también estableciendo el Color de chat
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
DesuscribirFilterMessageFunction
- Descripción: No registra una función de filtro (registrada por RegisterFilterMessage) dado su identificador, functionId .
- Retornos: nulo
Función de proceso de registro
- Descripción: Registra una función de comando de proceso en el chat identificado por functionId . Antes de que se filtre un mensaje, pasará a través de func (y otras funciones registradas por este). La función 0> func0> deberá verificar si el mensaje
- Retornos: nulo
- Ejemplo:
-- Pega este ejemplo en unModuleScript dentro de la carpeta ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Equipo para cortar una equipamientode pizza de pepperoni
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule
Comando de desregistro de procesos
- Descripción: No registra un procesador de comandos (registrado por RegisterProcessCommandsFunction ) dado el identificador, functionId .
- Retornos: nulo
Eventos
CanalAñadido
- Descripción: Dispara cuando se agrega un canal al chat.
CanalEliminado
- Descripción: Dispara cuando se elimina un canal del chat.
Altavoces agregados
- Descripción: Dispara cuando se agrega un orador al chat.
Altoparlante eliminado
- Descripción: Dispara cuando se elimina un orador del chat.
Hablante
Un ChatSpeaker es la representación de una entidad que puede hablar en un ChatChannel . Cada Player conectado al juego tiene automáticamente un ChatSpeaker asociado. Además, se pueden construir ChatSpeakers adicionales para no usuarios (como anunciantes o mensajes de enlace) usando 1> ChatService:AddSpeaker()1> .
Propiedades
Nombre
- Descripción: El nombre del bocina, usado en referenciar a este orador mientras se llaman muchas otras funciones.
Métodos
Unirse al canal
- Descripción: Añade el orador al canal con el channelName dado
- Retornos: nulo
Salir del canal
- Descripción: Elimina el orador del canal con el channelName dado
- Retornos: nulo
Obtener lista de canales
- Parámetros: Ninguno
- Descripción: Muestra una lista de los nombres de todos los canales en los que se encuentra el orador.
- Retornos: array< string >
EsInChannel
- Descripción: Muestra si el orador está en el canal con el channelName dado.
- Retornos: Booleano
Dime un mensaje
- Parámetros: string : message , 0> Library.cadena0> : 3> chanネーム3> , diccionario< 6> Library.cadena6> , Variante> 9> extraData 9>
- Retornos: ChatMessage
Enviar mensaje
- Parámetros: string : message , 0> Library.cadena0> : 3> canal3> , 6> Library.cadena6> : 9> fromSpeaker 9>
- Descripción: Enviar un mensaje al ChatSpeaker con el nombre dado fromSpeaker . Si no hay tal hablante en el canal, este método crea una advertencia y el hablante no verá el mensaje.
- Retornos: nulo
Enviar mensaje del sistema
- Descripción: Enviar un mensaje del sistema a la ChatChannel con el dado channelName . Si el orador no está en el canal, entonces este mensaje creará una advertencia y otros oradores en el canal no verán el mensaje.
- Retornos: nulo
ObtenerJugador
- Parámetros: Ninguno
- Descripción: Re turna el objeto Player con el que se asocia el bocina. Si el orador no es para un usuario (un bot) entonces esto返 nil .
- Retornos: Player o nil
Establecer datos extra
- Descripción: Establece algunos datos adicionales para el orador bajo un key específico. Cada vez que el orador envía un ChatMessage , este dato adicional se añade al mensaje si ninguno está proporcionado explícitamente con el mensaje. Por ejemplo, esto permite que el color de chat del bocinase establecer.
- Retornos: nulo
Obtener datos adicionales
- Descripción: Muestra los datos adicionales asociados con el key dado, configurado con SetExtraData.
- Retornos: Variant
Establecer canal principal
- Descripción: Establece al orador para hablar en el canal proporcionado. Dispara el MainChannelSet.
- Retornos: nil
Eventos
Mensaje dicho
Mensaje recibido
- Descripción: Se activa cuando el orador recibe un Mensaje de chat de otro orador en un Canal de chat
Mensaje del sistema recibido
- Descripción: Se activa cuando el orador recibe un mensaje de sistema ChatMessage de un ChatChannel con el nombre de chanalName dado.
CanalUnido
Canal izquierdo
Silenciado
- Parámetros: string : channelName , 0> Library.cadena0> : 3> reason = nil3> , 6>int6> : 9> duration 9> = 0
- Descripción: Se activó cuando el orador está silenciado en el ChatChannel con el channelName dado por la duración proporcionada (si se proporciona). Puede o no haber un reason proporcionado.
Deshabilitado
- Descripción: Se activa cuando el orador está des silenciado en el ChatChannel con el channelName dado.
Datos actualizados
- Descripción: Se activa cuando el valor predeterminado de una llave en los datos extra del bocinase actualiza con SetExtraData.
MainChannel
- Descripción: Se activa cuando el canal principal de los altavoces se cambia a Chat Channel con el channelName dado.
Mensaje de chat
Un ChatMessage es una estructura de datos que representa un mensaje enviado por un ChatSpeaker. Contiene datos sobre el mensaje, incluida la longitud del texto, si el texto ha sido filtrado por Roblox y datos adicionales sobre la aspecto, lookdel mensaje.
Propiedades
Identificación
- Tipo: int
- Descripción: Un identificador numérico único para el mensaje.
Desde el orador
- Tipo: string :
- Descripción: El nombre del ChatSpeaker que envió el mensaje.
Canal original
- Tipo: string :
- Descripción: El nombre del Canal de chat desde el que se originó el mensaje.
Está filtrado
- Tipo: Booleano
- Descripción: Detalla si el mensaje es filtrado por Roblox (si es así, el mensaje será nil )
Longitud del mensaje
- Tipo: int
- Descripción: La longitud del mensaje. Puedes usar esto para generar una cadena descompostada si el mensaje fue filtrado.
Mensaje
- Descripción: El texto del mensaje. Esta propiedad será nil si se filtra.
Tipo de mensaje
- Tipo: string :
- Descripción: El tipo del mensaje. Estos tipos se describen en el módulo ChatCommands:
- Posibles valores: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>
Tiempo
- Tipo: int
- Descripción: Un tiempo de marcado; el valor de os.time() en el momento de la creacionesdel mensaje.
Datos extra
- Tipo: diccionario< string , Variant>
Canal de chat
ChatChannel es un objeto que almacena datos sobre un solo canal, que es un medio por el cual los mensajes se pueden intercambiar entre ChatSpeakers . También tiene propiedades de acceso que determinan la visibilidad de los mensajes junto con si los usuarios pueden unirse o salir del canal manualmente (usando /join o 0> /leave0> comandos).
Por defecto, cada usuario tiene un ChatSpeaker que se agrega automáticamente a los canales de chat "Todos" y "Sistema" (aunque "Sistema" se lee solo). Si el usuario está en un Player.Team, también tendrá acceso a un canal para solo ese equipo.
Propiedades
Nombre
- Tipo: string
- Descripción: El nombre del canal, usado para referirse al canal en otras funciones.
Mensaje de bienvenida
- Tipo: string
- Descripción: Un mensaje para mostrar cuando un usuario se une al canal.
Únete
- Tipo: Booleano
- Descripción: Determina si un usuario puede unirse manualmente a un canal usando el comando /join . Un usuario todavía puede ser agregado a un canal usando el medio ChatSpeaker:JoinChannel() o cualquier otro medio, incluso si esta propiedad es falsa.
Saleable
- Tipo: Booleano
- Descripción: Determina si un usuario puede salir manualmente de un canal usando el comando /leave . Un usuario todavía puede ser eliminado de un canal usando ChatSpeaker:LeaveChannel() o cualquier otro medio, incluso si esta propiedad es falsa.
Unión automática
- Tipo: Booleano
- Descripción: Determina si el hablante de chat de un jugador se unirá automáticamente al canal al unirse al juego. Los hablantes no de usuarios no se unirán automáticamente a los canales, incluso cuando esta propiedad esté verdadera (puedes usar JoinChannel() para hacer esto).
Privado
- Tipo: Booleano
- Descripción: Determina si el canal se incluirá en la lista de canales devueltos por ChatService:GetChannelList() . Esto para chats de WhatsApp y chats de equipo.
Métodos
Expulsador de voces
- Descripción: Elimina el orador con el speakerName dado del canal, enviando un mensaje tanto al usuario como al canal desde el que el usuario fue expulsado. Si se proporciona un reason, el motivo se incluirá en el mensaje.
- Retornos: nulo
Silenciador
- Parámetros: string : speakerName , 0> Library.cadena0> : 3> reason = nil3> , 6>int6> 9> duration = 0 9>
- Descripción: Silencia al orador con el speakerName dado en el canal para una duración especificada en segundos. Si duration es nulo o 0, el silencio es permanente. Si 0> reason0> se proporciona, se enviará un mensaje al canal con la razón incluida.
- Retornos: nulo
Deshabilitar el sonido
- Descripción:: Desactiva el micrófono con el speakerName dado en el canal.
- Retornos: nulo
IsSpeakerSilenciado
- Descripción: Detalla si el orador con el nombre dado speakerName está silenciado en el canal.
- Retornos: Booleano
Obtener lista de hablantes
- Parámetros: Ninguno
- Descripción: Muestra una lista que contiene todos los nombres del ChatSpeaker actualmente en el canal.
- Retornos: array< string >
Enviar mensaje del sistema
- Descripción: Enviar un mensaje del "Sistema" ChatSpeaker al canal.
- Retornos: nulo
Registrar filtro de mensaje
- Descripción: Registra una función de filtro, func , identificada por functionId para el canal. La función de filtro se llamará con el 0> ChatSpeaker 0> , el 3> ChatMessage 3> y el 6> Library.cadena : nombre del canal en el que se originó el mensaje
- Retornos: nulo
- Ejemplo:
-- Pega este ejemplo en unModuleScript dentro de la carpeta ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Equipo para cortar una equipamientode pizza de pepperoni
local function processCommand(speakerName, message, channelName)
if string.sub(message, 1, command:len()) == command then
local model = game:GetService("InsertService"):LoadAsset(toolId)
local tool = model:GetChildren()[1]
local speaker = ChatService:GetSpeaker(speakerName)
local player = speaker:GetPlayer()
tool.Parent = player.Backpack
return true
end
return false
end
local function runChatModule(ChatService)
ChatService:RegisterProcessCommandsFunction(functionId, processCommand)
end
return runChatModule
DesuscribirFilterMessageFunction
- Descripción: No registra una función de filtro (registrada por RegisterFilterMessage) dado su identificador, functionId .
- Retornos: nulo
Función de proceso de registro
- Descripción: Registra una función de comando de proceso, func , identificada por functionId para el chat. Antes de que se filtre un mensaje, pasará a través de functionId (y otras funciones registradas por este). La función <
- Retornos: nulo
- Ejemplo:
-- Pega este ejemplo en unModuleScript dentro de la carpeta ChatModule.
-- Este ejemplo filtra una palabra clave, y si es exitoso, establece el color de chat del mensaje
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verde
local function doFilter(speaker, messageObject, channelName)
-- Compruebe si el mensaje contiene la palabra clave
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Elimina (filtro) la palabra clave del mensaje, también estableciendo el Color de chat
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Crea un canal y registra la función de filtro
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Comando de desregistro de procesos
- Descripción: No registra un procesador de comandos (registrado por RegisterProcessCommandsFunction) dado el identificador, functionId .
- Retornos: nulo
Eventos
Mensaje publicado
- Descripción: Dispara cuando se publica un mensaje en el canal.
AltavozUnido
- Descripción: Dispara cuando se une un ChatSpeaker al canal.
Altavoz izquierdo
- Descripción: Dispara cuando un ChatSpeaker salga del canal.
Habitación silenciada
- Descripción: Dispara cuando se ha silenciado un Hablante del canal
AltoparlanteDesSilenciado
- Descripción: Dispara cuando se desilencia un Hablante del chat.