Você pode usar os seguintes módulos de chat para apoiar comportamentos do lado do servidor do Legacy Chat System, incluindo:
- ChatService : Um singleton que gerencia todos os outros módulos de chat.
- ChatSpeaker : Entidade que pode criar mensagens em um ChatChannel; cada Player terá automaticamente um ChatSpeaker e bots podem conversar criando ChatSpeakers.
- ChatMessage : Um contêiner para conteúdo que um ChatSpeaker envia para um ChatChannel; contém metadados usados para formatar a mensagem ou adicionar funcionalidades extras aos comandos.
- ChatChannel : Um canal por meio do qual os Speakers de Chat podem trocar mensagens de chat; também usado para o chat de equipe e o chat de suspiro.
Serviço de Chat
ChatService é um objeto de singleton que lida com o comportamento do lado do servidor do sistema de chat Lua, como ChatChannels e ChatSpeakers.
Todos ModuleScript s dentro da pasta ChatModuleScript devem retornar uma função, e essa função será chamada com o singleton ChatService.
Métodos
Adicionar canal
- Descrição: Cria um objeto ChatChannel com o nome dado e retorna-o.
- Retornos: ChatChannel
Remover Canal
- Descrição: Remova um canal com o nome dado
- Retornos: void
Obter canal
- Descrição: Retorna o canal com o nome dado, ou nil se não existir.
- Retornos: ChatChannel
Adicionar Orador
- Descrição: Crie e adicione um orador ao chat com o nome dado, então retornará.
- Retornos: ChatSpeaker
Remover o Speaker
- Descrição: Remova o orador do chat com o nome dado.
- Retornos: void
Obter Speaker
- Descrição: Retorna o orador com o nome dado, ou nil se não existir.
- Retornos: ChatSpeaker
Obter lista de canais
- Parâmetros: nenhum
- Descrição: Retorna uma lista de nomes de todos os canais não privados no chat.
- Retornos: array< string >
Obter lista de canais automáticos
- Parâmetros: nenhum
- Descrição: Retorna uma lista de nomes de todos os canais no chat com o AutoJoin definido como verdadeiro.
- Retornos: array< string >
RegisterFilterMessageFunction
- Descrição: Registra uma função de filtro no chat identificado por functionId . Quaisquer alterações na mensagem persistirão e serão exibidas quando a mensagem passar por todas as outras funções de filtro. Essa função é passada pelo nome do altofalante, o Objetoda mensagem e o canal em que a mensagem foi originada.
- Retornos: void
- Exemplo:
-- Paste this example into a ModuleScript within the ChatModuleS folder.
-- Este exemplo filtra uma palavra-chave e, se tiver sucesso, define a cor de chat da mensagem
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verde
local function doFilter(speaker, messageObject, channelName)
-- Verifique se a mensagem contém a palavra-chave
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Remova (filtro) a palavra-chave da mensagem, também definindo a Cor do 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
DesativarFilterMessageFunction
- Descrição: Não registra uma função de filtro (registrada por RegisterFilterMessage) com seu identificador, functionId .
- Retornos: void
Função RegisterProcessCommands
- Descrição: Registra uma função de comando de processo no chat identificado por functionId. Antes que uma mensagem seja filtrada, ela passará por func (e outras funções registradas por este). A função 0> func0> deve verificar se a mensagem invoca
- Retornos: void
- Exemplo:
-- Paste this example into a ModuleScript within the ChatModuleS folder.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Equipamento de fatia de pizza de equipamento
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
Não registrar processo de comando
- Descrição: Não registra um processador de comando (registrado por RegisterProcessCommandsFunction ) dado o identificador, functionId .
- Retornos: void
Eventos
CanalAdicionado
- Descrição: Fires quando um canal é adicionado ao chat.
CanalRemovido
- Descrição: Fires quando um channel é removido do chat.
PalestranteAdicionado
- Descrição: Fires quando um orador é adicionado ao chat.
Removedor de Speaker
- Descrição: Fires quando um orador é removido do chat.
Palestrante de Chat
Um ChatSpeaker é a representação de uma entidade que pode falar em um ChatChannel. Cada Player conectado ao jogo tem um ChatSpeaker associado. Um ChatSpeakers adicional pode ser construído para não-usuários (como anunciantes ou mensagens de dicas) usando 2>ChatService:AddSpeaker()2>.
Propriedades
Nome
- Descrição: O nome do altofalante, usado em referência a este orador ao chamar muitas outras funções.
Métodos
Entrar no canal
- Descrição: Adiciona o orador ao canal com o channelName dado
- Retornos: void
Sair do Canal
- Descrição: Remova o orador do canal com o channelName dado
- Retornos: void
Obter lista de canais
- Parâmetros: Nenhum
- Descrição: Retorna uma lista dos nomes de todos os canais em que o orador está.
- Retornos: array< string >
IsInChannel
- Descrição: Retorna se o orador está no canal com o channelName dado.
- Retornos: boolo
Diga mensagem
- Parâmetros: string : message , 0> Library.string / cadeia / texto0> : 3> channelName3> , dicionário< 6> Library.string / cadeia / texto6> , Variáveis> 9> extraData 9>
- Retornos: ChatMessage
Enviar mensagem
- Parâmetros: string : message , 0> Library.string / cadeia / texto0> : 3> canal3> , 6> Library.string / cadeia / texto6> : 9> fromSpeaker 9>
- Descrição: Envia uma mensagem para o ChatSpeaker com o nome de fromSpeaker dado. Se nenhum such speaker estiver no canal, este método cria uma advertência e o speaker não verá a mensagem.
- Retornos: void
Enviar Mensagem do Sistema
- Descrição: Envia uma mensagem do sistema para o ChatChannel com o dado channelName . Se o orador não estiver no canal, então esta mensagem criará um aviso e outros oradores no canal não verão a mensagem.
- Retornos: void
ObterJogador
- Parâmetros: Nenhum
- Descrição: Retorna o objeto Player associado com o altofalante. Se o orador não for para um usuário (um bot) então isso retorna nil .
- Retornos: Player ou nil
Definir Dados Extras
- Descrição: Defines alguns dados extras para o orador sob um determinado key . Sempre que o orador envia uma Mensagem de Chat , esse dado extra é anexado à mensagem se nenhum for fornecido explplicitamente com a mensagem. Por exemplo, isso permite que a cor do chat do altofalanteseja configurar.
- Retornos: void
Obter Dados Extras
- Descrição: Retorna os dados extras associados ao key , definido usando SetExtraData.
- Retornos: Variante
Definir o canal principal
- Descrição: Configura o orador para falar no canal fornecido. Ativa o MainChannelSet.
- Retornos: nil
Eventos
Mensagem Dita
Mensagem Recebida
Recebeu uma Mensagem do Sistema
- Descrição: Fired when the speaker recebe uma system ChatMessage from a ChatChannel with the given 0> channelName0> .
CanalEntrou
- Parâmetros: string : channelName , 0> Library.string / cadeia / texto0> : 3> channelWelcomeMessage 3>
Canal Esquerdo
Mutado
- Parâmetros: string : channelName , 0> Library.string / cadeia / texto0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
- Descrição: Fired when the speaker is muted on the ChatChannel with the given channelName for the given duration (if provided). There may or may not be a 0> reason0> provided.
Sem silenciar
ExtraDataAtualizado
- Descrição: Ativado quando o valor padrão de uma chave nos dados extras do altofalanteé atualizado usando SetExtraData.
MainChannelSet
- Descrição: Fired quando o canal principal dos oradores é alterado para o ChatChannel com o channelName dado.
Mensagem de Bate-papo
Um ChatMessage é uma estrutura de dados representando uma mensagem enviada por um ChatSpeaker. Ele contém dados sobre a mensagem, incluindo a longura do texto, se a texto foi filtrado pelo Roblox e dados extras sobre a aparência da mensagem.
Propriedades
ID
- Tipo: int
- Descrição: Um identificador numérico exclusivo para a mensagem.
Do Speaker
- Tipo: string :
- Descrição: O nome do ChatSpeaker que enviou a mensagem.
CanalOriginal
- Tipo: string :
- Descrição: O nome do ChatChannel do qual a mensagem vem.
Está filtrado
- Tipo: bool
- Descrição: Descreve se a mensagem é filtrada pelo Roblox (se for, a mensagem será nil )
Comprimento da mensagem
- Tipo: int
- Descrição: Comprimento da mensagem. Você pode usar isso para gerar uma string hashed-out se a mensagem for filtrada.
Mensagem
- Descrição: O texto da mensagem. Essa propriedade será nil se IsFiltered estiver verdadeiro.
Tipo de Mensagem
- Tipo: string :
- Descrição: O tipo da mensagem. Esses tipos são descritos no módulo ChatCommands:
- Valores possíveis: "Message" , "System" , 0> ("MeCommand")0> , 3> ("Welcome")3> , 6> ("SetCore")6> , 9> ("Whisper") 9>
Tempo
Dados extras
- Tipo: dicionário< string , Variáveis>
Canal de Chat
ChatChannel é um objeto que armazena dados sobre um único canal, que é um meio por meio de mensagens podem ser trocadas entre ChatSpeakers . Ele também tem propriedades de acesso que determinam a visibilidade das mensagens ao mesmo tempo que os usuários podem entrar ou sair do canal manualmente (usando /join ou 0> /leave0> comandos).
Por padrão, cada usuário tem um ChatSpeaker que é automaticamente adicionado aos canais de chat "Todos" e "Sistema" (embora "Sistema" seja lido apenas). Se o usuário estiver em um Player.Team, eles também terão acesso a um canal para apenas essa equipe.
Propriedades
Nome
- Tipo: string
- Descrição: O nome do canal, usado para referenciar o canal em outras funções.
Mensagem de Bem-Vindo
- Tipo: string
- Descrição: Uma mensagem para exibir quando um usuário se juntar ao canal.
Entrável
- Tipo: bool
- Descrição: Determina se um usuário pode entrar manualmente em um canal usando o comando /join. Um usuário ainda pode ser adicionado a um canal usando ChatSpeaker:JoinChannel() ou outros meios, mesmo que essa propriedade seja falsa.
Sair
- Tipo: bool
- Descrição: Determina se um usuário pode sair manualmente de um canal usando o comando /leave. Um usuário ainda pode ser removido de um canal usando ChatSpeaker:LeaveChannel() ou outros meios, mesmo que essa propriedade seja falsa.
Entrar Automaticamente
- Tipo: bool
- Descrição: Determina se o ChatSpeaker de um jogador vai automaticamente se juntar ao canal ao entrar no jogo. Os oradores não-user não vão automaticamente se juntar aos canais, mesmo quando essa propriedade estiver verdadeira (Você pode usar ChatSpeaker:JoinChannel() para fazer isso).
Privado
- Tipo: bool
- Descrição: Determina se o canal será incluído na lista de canais retornados por ChatService:GetChannelList() . Isso para conversas de coisas silenciosas e de equipe.
Métodos
Speaker de Chutar
- Descrição: Remova o orador com o speakerName dado do canal, enviando uma mensagem para o usuário e o canal de que o usuário foi expulso. Se um reason for fornecido, a razão será incluída na mensagem.
- Retornos: void
MuteSpeaker
- Parâmetros: string : speakerName , 0> Library.string / cadeia / texto0> : 3> reason = nil3> , 6>int6> 9> duration = 0 9>
- Descrição: Muta o orador com o speakerName dado no canal por um tempo especificado em segundos. Se duration for nil ou 0, a mute está em definida. Se 0> reason0> for fornecido, uma mensagem será enviada para o canal com a razão incluída.
- Retornos: void
Desativar o som do orador
- Descrição: Desbloqueia o orador com o speakerName dado no canal.
- Retornos: void
IsSpeakerMuted
- Descrição: Descreve se o orador com o speakerName dado está atualmente silenciado no canal.
- Retornos: boolo
Obter Lista de Palestrantes
- Parâmetros: Nenhum
- Descrição: Retorna uma lista contendo todos os nomes do ChatSpeaker atualmente no canal.
- Retornos: array< string >
Enviar Mensagem do Sistema
- Descrição: Envia uma mensagem do "Sistema" ChatSpeaker para o canal.
- Retornos: void
RegisterFilterMessageFunction
- Descrição: Registra uma função de filtro, func , identificado por functionId para o canal. A função de filtro será chamada com o 0> ChatSpeaker 0> , o 3> ChatMessage3> e o 6>Library.string / cadeia / texto 6>: nome do canal em que o mensagem foi origin
- Retornos: void
- Exemplo:
-- Paste this example into a ModuleScript within the ChatModuleS folder.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Equipamento de fatia de pizza de equipamento
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
DesativarFilterMessageFunction
- Descrição: Não registra uma função de filtro (registrada por RegisterFilterMessage) com seu identificador, functionId .
- Retornos: void
Função RegisterProcessCommands
- Descrição: Registra uma função de comando de processo, func, identificada por functionId no chat. Antes de uma mensagem ser filtrada, ela passará por 0> func 0> (e outras funções registradas
- Retornos: void
- Exemplo:
-- Paste this example into a ModuleScript within the ChatModuleS folder.
-- Este exemplo filtra uma palavra-chave e, se tiver sucesso, define a cor de chat da mensagem
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verde
local function doFilter(speaker, messageObject, channelName)
-- Verifique se a mensagem contém a palavra-chave
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Remova (filtro) a palavra-chave da mensagem, também definindo a Cor do Chat
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Criar um canal e registrar a função de filtro
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Não registrar processo de comando
- Descrição: Não registra um processador de comando (registrado por RegisterProcessCommandsFunction) dado o identificador, functionId .
- Retornos: void
Eventos
MensagemPostada
- Descrição: Fires quando uma mensagem é postada no canal.
SpeakerEntrou
- Descrição: Fires when a ChatSpeaker joins the canal.
SpeakerLeft
- Descrição: Fires when a ChatSpeaker leaves the canal.
PalestranteMutado
- Parâmetros: string : speakerName , 0> Library.string / cadeia / texto0> : 3> reason3> , 6>int6> 9>duration = 0 9>
- Descrição: Fires quando um ChatSpeaker foi silenciado no canal.
PalestranteDesativado
- Descrição: Fires quando um ChatSpeaker não é silenciado.