Módulos de chat del lado del servidor

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

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

  • Parámetros: string : channelName
  • Descripción: Crea un objeto de canal de chat con el nombre dado y lo devuelve.
  • Regresos: canal de chat

Quitar canal

  • Parámetros: string : channelName
  • Descripción: Eliminar un canal con el nombre dado
  • Regresos: vacío

Obtener canal

  • Parámetros: string : channelName
  • Descripción: Devuelve el canal con el nombre dado, o nil si no existe.
  • Regresos: canal de chat

Añadir altavoz

  • Parámetros: string : speakerName
  • Descripción: Crear y agregar un orador al chat con el nombre dado, luego devolverlo.

Eliminar orador

  • Parámetros: string : speakerName
  • Descripción: Elimina al orador del chat con el nombre dado.
  • Regresos: vacío

Obtener orador

  • Parámetros: string : speakerName
  • Descripción: Devuelve al orador con el nombre dado, o nil si no existe.

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

  • Parámetros: string : functionId , función : func
  • 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

  • Parámetros: string : functionId
  • 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

  • Parámetros: string : functionId , función : func
  • 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

  • Parámetros: string : functionId
  • Descripción: Unregistra un procesador de comandos (registrado por RegisterProcessCommandsFunction ) dado el identificador, functionId .
  • Regresos: vacío

Eventos

Canal agregado

  • Parámetros: string : channelName
  • Descripción: Se activa cuando se agrega un canal al chat.

CanalRemovido

  • Parámetros: string : channelName
  • Descripción: Se activa cuando se elimina un canal del chat.

Altavoz agregado

  • Parámetros: string : speakerName
  • Descripción: Se activa cuando se agrega un orador al chat.

AltavozRemovido

  • Parámetros: string : speakerName
  • 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

  • Tipo: string : Name
  • Descripción: El nombre del bocina, utilizado para referenciar a este orador mientras se llaman muchas otras funciones.

Métodos

Únete al canal

  • Parámetros: string : channelName
  • Descripción: Añade el orador al canal con el dado channelName
  • Regresos: vacío

Salir del canal

  • Parámetros: string : channelName
  • 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

  • Parámetros: string : channelName
  • Descripción: Regresa si el orador está en el canal con el dado channelName .
  • Devoluciones: bool

Dime mensaje

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

  • Parámetros: string : message , string : channelName
  • 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

  • Parámetros: string : key , Variante data
  • 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

  • Parámetros: string : key
  • Descripción: Devuelve los datos adicionales asociados con el dado key , establecido usando SetExtraData.
  • Regresos: Variante

Establecer el canal principal

  • Parámetros: string : channelName
  • Descripción: Establece el orador para hablar en el canal proporcionado. Dispara MainChannelSet.
  • Devoluciones: nil

Eventos

Mensaje dicho

Mensaje recibido

Mensaje del sistema recibido

  • Parámetros: Mensaje de chatmessage , string : channelName
  • 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

  • Parámetros: string : channelName , string : channelWelcomeMessage
  • Descripción: Se disparó cuando el orador se unió al canal de chat con el dado channelName.

canal izquierdo

  • Parámetros: string : channelName
  • Descripción: Se disparó cuando el orador dejó un canal de chat con el dado channelName.

Silenciado

  • Parámetros: string : channelName , string : reason = nil , int : duration = 0
  • 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

  • Parámetros: string : channelName
  • Descripción: Se disparó cuando el orador se desilenció en el canal de chat con el channelName dado.

Datos extra actualizados

  • Parámetros: string : key , Variante data
  • Descripción: Se disparó cuando el valor predeterminado de una clave en los datos adicionales del bocinase actualizó usando SetExtraData.

Set de canal principal

  • Parámetros: string : channelName
  • 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

Canal original

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

  • Tipo: string : o nil
  • 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>
  • Descripción: Un diccionario de metadatos para este mensaje.Se usa para alterar la apariencia del mensaje.Las siguientes claves pueden estar presentes:

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

  • Parámetros: string : speakerName , string : reason = nil
  • 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

  • Parámetros: string : speakerName , string : reason = nil , intduration = 0
  • 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

  • Parámetros: string : speakerName
  • Descripción: Silencia al orador con el dado speakerName en el canal.
  • Regresos: vacío

Silenciador de altavoz

  • Parámetros: string : speakerName
  • 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

  • Parámetros: string : message
  • Descripción: Envia un mensaje desde el "Sistema" Hablante de chat al canal.
  • Regresos: vacío

Función de filtro de mensajes de registro

  • Parámetros: string : functionId , funciónfunc
  • 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

  • Parámetros: string : functionId
  • 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

  • Parámetros: string : functionId , funciónfunc
  • 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

  • Parámetros: string : functionId
  • Descripción: Registra un procesador de comandos (registrado por RegisterProcessCommandsFunction) dado el identificador, functionId .
  • Regresos: vacío

Eventos

Mensaje publicado

  • Parámetros: Mensaje de chat : message
  • Descripción: Se activa cuando se publica un mensaje en el canal.

Altavoz unido

Altavoz izquierdo

Altavoz silenciado

  • Parámetros: string : speakerName , string : reason , intduration = 0
  • Descripción: Se enciende cuando un Hablante de chat ha sido silenciado en el canal.

Altavoz deshabilitado