Puedes usar los siguientes módulos de chat para soportar los comportamientos del lado del servidor del sistema de chat Legado incluyendo:
- Servicio de chat : Un singleton que gestiona todos los demás módulos de chat.
- Orador de chat : Una entidad que puede crear mensajes en un canal de chat; cada Player tendrá automáticamente un orador de chat y los bots podrán chatear creando oradores de chat.
- Mensaje de chat : Un contenedor para el contenido que un orador de chat envía a un canal de chat; contiene metadatos que se utilizan para formatear el mensaje o agregar funcionalidad adicional a los comandos.
- Canal de chat : Un canal por el cual los oradores 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 singleton que maneja el comportamiento del lado del servidor del sistema de chat de Lua, como ChatChannels y ChatSpeakers.
Todos los ModuleScript dentro de la carpeta ChatModule deberían devolver una función, y esa función se llamará con el singleton de ChatService.
Métodos
Agregar canal
- Descripción: Crea un objeto de canal de chat con el nombre dado y lo devuelve.
- Regresos: canal de chat
Quitar canal
- Descripción: Eliminar un canal con el nombre dado
- Regresos: vacío
Obtener canal
- Descripción: Devuelve el canal con el nombre dado, o nil si no existe.
- Regresos: canal de chat
Añadir altavoz
- Descripción: Crear y agregar un orador al chat con el nombre dado, luego devolverlo.
- Regresos: Hablante de chat
Eliminar orador
- Descripción: Elimina al orador del chat con el nombre dado.
- Regresos: vacío
Obtener orador
- Descripción: Devuelve al orador con el nombre dado, o nil si no existe.
- Regresos: Hablante de chat
Obtener lista de canales
- Parámetros: ninguno
- Descripción: Devuelve una lista de los nombres de todos los canales no privados en el chat.
- Devoluciones: array< string >
Obtener la lista de canales de unión automática
- Parámetros: ninguno
- Descripción: Devuelve una lista de los nombres de todos los canales en el chat con AutoJoin configurado en verdadero.
- Devoluciones: array< string >
Función de filtro de mensajes de registro
- 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 pase por todas las otras funciones de filtrado.Esta función recibe el nombre del bocina, el objeto del mensaje y el canal en el que se originó el mensaje.
- Regresos: vacío
- Ejemplo:
-- Pega este ejemplo en un ModuleScript dentro de la carpeta ChatModule.
-- Este ejemplo filtra una palabra clave, y si tiene éxito, 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
Función de mensaje de filtro no registrada
- Descripción: Registra una función de filtro (registrada por RegisterFilterMessageFunction) dada su identificador, functionId .
- Regresos: vacío
Función de comandos de registro de procesos
- Descripción: Registra una función de comando de proceso en el chat identificado por functionId .Antes de que se filtre un mensaje, pasará por func (y otras funciones registradas por este).La función func debe verificar si el mensaje invoca un comando.Si es así, realice la acción del comando y devuelva verdadero.Devolver verdad indica que el mensaje fue de hecho un comando y no debe mostrarse.La función se puede des registrar usando UnregisterProcessCommandsFunction.
- Regresos: vacío
- Ejemplo:
-- Pega este ejemplo en un ModuleScript dentro de la carpeta ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Engranaje de rebanada equipamientopizza 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
Función de comandos de desregistro de procesos
- Descripción: Unregistra un procesador de comandos (registrado por RegisterProcessCommandsFunction ) dado el identificador, functionId .
- Regresos: vacío
Eventos
Canal agregado
- Descripción: Se activa cuando se agrega un canal al chat.
CanalRemovido
- Descripción: Se activa cuando se elimina un canal del chat.
Altavoz agregado
- Descripción: Se activa cuando se agrega un orador al chat.
AltavozRemovido
- Descripción: Se enciende cuando se elimina un orador del chat.
Hablante de chat
Un Orador de chat es la representación de una entidad que puede hablar en un canal de chat .Cada Player conectado al juego automáticamente tiene un orador de chat asociado.Los oradores de chat adicionales pueden ser construidos para usuarios no activos (como anunciadores o mensajes de indicación) usando ChatService:AddSpeaker().
Propiedades
Nombre
- Descripción: El nombre del bocina, utilizado para referenciar a este orador mientras se llaman muchas otras funciones.
Métodos
Únete al canal
- Descripción: Añade el orador al canal con el dado channelName
- Regresos: vacío
Salir del canal
- Descripción: Elimina al orador del canal con el dado channelName
- Regresos: vacío
Obtener lista de canales
- Parámetros: Ninguno
- Descripción: Devuelve una lista de los nombres de todos los canales en los que está el orador.
- Devoluciones: array< string >
Está en el canal
- Descripción: Regresa si el orador está en el canal con el dado channelName .
- Devoluciones: bool
Dime mensaje
- Descripción: Causa que el orador diga message y devuelva el objeto Mensaje de chat creado al hacerlo.
- Regresos: Mensaje de chat
Enviar mensaje
- Parámetros: : , : , : , :
- Descripción: Envia un mensaje al Hablante de chat con el nombre dado fromSpeaker.Si no hay tal orador en el canal, este método crea una advertencia y el orador no verá el mensaje.
- Regresos: vacío
Enviar mensaje del sistema
- Descripción: Envia un mensaje del sistema al canal de chat con el channelName dado.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.
- Regresos: vacío
Obtener jugador
- Parámetros: Ninguno
- Descripción: Regresa el objeto Player asociado con el bocina.Si el orador no es para un usuario (un bot), entonces esto devuelve nil .
- Regresos: Player o nil
Establecer datos adicionales
- Descripción: Establece algunos datos adicionales para el orador bajo un específico key .Cada vez que el orador envía un mensaje de chat este dato adicional se adjunta al mensaje si ninguno se proporciona explícitamente con el mensaje.Por ejemplo, esto permite que el color del chat del bocinase establecer.
- Regresos: vacío
Obtener datos adicionales
- Descripción: Devuelve los datos adicionales asociados con el dado key , establecido usando SetExtraData.
- Regresos: Variante
Establecer el canal principal
- Descripción: Establece el orador para hablar en el canal proporcionado. Dispara MainChannelSet.
- Devoluciones: nil
Eventos
Mensaje dicho
Mensaje recibido
- Descripción: Se disparó cuando el orador recibe un mensaje de chat de otro orador en un canal de chat
Mensaje del sistema recibido
- Descripción: Se disparó cuando el orador recibe un sistema mensaje de chat de un canal de chat con el dado .
Se unió al canal
canal izquierdo
Silenciado
- Descripción: Se disparó cuando el orador está silenciado en el canal de chat con el dado channelName por el tiempo dado (si se proporcionó).Puede o no haber un reason proporcionado.
Desilenciado
Datos extra actualizados
- Descripción: Se disparó cuando el valor predeterminado de una clave en los datos adicionales del bocinase actualizó usando SetExtraData.
Set de canal principal
- Descripción: Se disparó cuando el canal principal de los oradores se cambió al canal de chat con el dado .
Mensaje de chat
Un mensaje de chat es una estructura de datos que representa un mensaje enviado desde un orador de chat.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
ID
- Tipo: int
- Descripción: Un identificador numérico único para el mensaje.
DesdeSpeaker
- Tipo: string :
- Descripción: El nombre del Hablante de chat que envió el mensaje.
Canal original
- Tipo: string :
- Descripción: El nombre del canal de chat del que provino el mensaje.
Está filtrado
- Tipo: bool
- Descripción: Se describe si el mensaje es filtrado por Roblox (si es verdad, el mensaje será nil )
Longitud del mensaje
- Tipo: int
- Descripción: La longitud del mensaje. Puedes usar esto para generar una cadena hash si el mensaje fue filtrado.
Mensaje
- Descripción: El texto del mensaje. Esta propiedad será nil si IsFiltered es verdadero.
Tipo de mensaje
- Tipo: string :
- Descripción: El tipo del mensaje. Estos tipos se describen en el módulo ChatConstants:
- Valores posibles: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"
Tiempo
- Tipo: int
- Descripción: Un marcador de tiempo; el valor de os.time() en el momento de la creacionesdel mensaje.
Datos extra
- Tipo: diccionario< string , Variante>
Canal de chat
El canal de chat es un objeto que almacena datos sobre un solo canal, que es un medio por el cual se pueden intercambiar mensajes entre Oradores de chat.También tiene propiedades de permiso de acceso que determinan la visibilidad de los mensajes junto con si los usuarios pueden unirse o salir del canal manualmente (usando /join o /leave comandos).
Por defecto, cada usuario tiene un Hablante de chat 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 solo para ese Equipo.
Propiedades
Nombre
- Tipo: string
- Descripción: El nombre del canal, utilizado para referenciar el canal en otras funciones.
Mensaje de bienvenida
- Tipo: string
- Descripción: Un mensaje para mostrar cuando un usuario se una al canal.
Unible
- Tipo: bool
- Descripción: Determina si un usuario puede unirse manualmente a un canal usando el comando /join.Un usuario aún puede agregarse a un canal usando ChatSpeaker:JoinChannel() o cualquier otro medio, incluso si esta propiedad es falsa.
Dejable
- Tipo: bool
- Descripción: Determina si un usuario puede salir manualmente de un canal usando el comando /leave.Un usuario aún puede ser eliminado de un canal usando ChatSpeaker:LeaveChannel() o cualquier otro medio, incluso si esta propiedad es falsa.
Unión automática
- Tipo: bool
- Descripción: Determina si el Hablante de chat de un jugador se unirá automáticamente al canal al unirse al juego.Los oradores no usuarios no se unirán automáticamente a los canales, incluso cuando esta propiedad sea verdadera (puedes usar ChatSpeaker:JoinChannel() para hacer esto).
Privado
- Tipo: bool
- Descripción: Determina si el canal se incluirá en la lista de canales devueltos por ChatService:GetChannelList().Esto para chats susurrados y chats de equipo.
Métodos
Altavoz de patada
- Descripción: Elimina al orador con el speakerName dado del canal, enviando un mensaje tanto al usuario como al canal desde el cual el usuario fue expulsado.Si se proporciona un reason, la razón se incluirá en el mensaje.
- Regresos: vacío
Altavoz silencioso
- Descripción: Silencia al orador con el speakerName en el canal por un período especificado en segundos.Si duration es nil o 0, el silencio es indefinido.Si se proporciona reason, se enviará un mensaje al canal con la razón incluida.
- Regresos: vacío
Desactivar altavoz
- Descripción: Silencia al orador con el dado speakerName en el canal.
- Regresos: vacío
Silenciador de altavoz
- Descripción: Describe si el orador con el dado speakerName está actualmente silenciado en el canal.
- Devoluciones: bool
Obtener lista de oradores
- Parámetros: Ninguno
- Descripción: Devuelve una lista que contiene todos si los nombres del Hablante de chat actualmente en el canal.
- Devoluciones: array< string >
Enviar mensaje del sistema
- Descripción: Envia un mensaje desde el "Sistema" Hablante de chat al canal.
- Regresos: vacío
Función de filtro de mensajes de registro
- Descripción: Registra una función de filtro, func , identificada por functionId al canal.La función de filtro se llamará con el ChatSpeaker, el ChatMessage y el string: nombre del canal en el que se originó el mensaje.Los cambios en el mensaje persistirán y se mostrarán después de filtrarlos.
- Regresos: vacío
- Ejemplo:
-- Pega este ejemplo en un ModuleScript dentro de la carpeta ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Engranaje de rebanada equipamientopizza 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
Función de mensaje de filtro no registrada
- Descripción: Registra una función de filtro (registrada por RegisterFilterMessageFunction) dada su identificador, functionId .
- Regresos: vacío
Función de comandos de registro de procesos
- Descripción: Registra una función de comando de proceso, func , identificada por functionId al chat.Antes de que se filtre un mensaje, pasará por func (y otras funciones registradas por este).La función func debe verificar si el mensaje invoca un comando.Si es así, realice la acción del comando y devuelva verdadero.Devolver verdad indica que el mensaje fue de hecho un comando y no debe mostrarse.La función se puede des registrar usando UnregisterProcessCommandsFunction.
- Regresos: vacío
- Ejemplo:
-- Pega este ejemplo en un ModuleScript dentro de la carpeta ChatModule.
-- Este ejemplo filtra una palabra clave, y si tiene éxito, 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
Función de comandos de desregistro de procesos
- Descripción: Registra un procesador de comandos (registrado por RegisterProcessCommandsFunction) dado el identificador, functionId .
- Regresos: vacío
Eventos
Mensaje publicado
- Descripción: Se activa cuando se publica un mensaje en el canal.
Altavoz unido
- Descripción: Se enciende cuando un Hablante de chat se une al canal.
Altavoz izquierdo
- Descripción: Se enciende cuando un Hablante de chat deja el canal.
Altavoz silenciado
- Descripción: Se enciende cuando un Hablante de chat ha sido silenciado en el canal.
Altavoz deshabilitado
- Descripción: Se enciende cuando un Altavoz de chat se desactiva.