Você pode usar os seguintes módulos de chat para suportar comportamentos do lado do servidor do sistema de chat Legado, incluindo:
- Serviço de Chat : Um singleton que gerencia todos os outros módulos de chat.
- Orador de Chat : Uma entidade que pode criar mensagens em um ChatChannel; cada Player terá automaticamente um Orador de Chat e bots poderão conversar criando Oradores de Chat.
- Mensagem de bate-papo : Um contêiner para conteúdo que um orador de chat envia para um canal de chat; contém metadados usados para formatar a mensagem ou adicionar funcionalidades extras aos comandos.
- Canal de Chat : Um canal pelo qual ChatSpeakers podem trocar Mensagem de Chat; também usado para chat de equipe e chat de sussurro.
Serviço de Chat
Serviço de Chat é um objeto singleton que lida com o comportamento do lado do servidor do sistema de chat Lua, como Canais de Chat e Falantes de Chat.
Todos os dentro da pasta ChatModules devem retornar uma função, e essa função será chamada com o singelo do ChatService.
Métodos
Adicionar Canal
- Descrição: Cria um objeto de Canal de Chat com o nome dado e o retorna.
- Retornos: ChatChannel
Remover Canal
- Descrição: Remova um canal com o nome dado
- Retornos: vazio
Obter Canal
- Descrição: Retorna o canal com o nome dado, ou nil se não existir.
- Retornos: ChatChannel
Adicionar Palestrante
- Descrição: Crie e adicione um orador ao chat com o nome dado, então retorne-o.
- Retornos: Falante de Chat
Remover Palestrante
- Descrição: Remove o orador do chat com o nome dado.
- Retornos: vazio
Obter Palestrante
- Descrição: Retorna o orador com o nome dado, ou nil se ele não existir.
- Retornos: Falante de Chat
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 de Entrada Automática
- 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 >
Função de Registro de Mensagem de Filtrador
- 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 o nome do altofalante, o Objetode mensagem e o canal em que a mensagem se originou.
- Retornos: vazio
- Exemplo:
-- Cole este exemplo em um ModuleScript dentro da pasta ChatModules.
-- Este exemplo filtra uma palavra-chave e, se for bem-sucedido, 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
Função de mensagem de filtro não registrada
- Descrição: Não registra uma função de filtro (registrada por RegisterFilterMessageFunction) dada sua identificação, functionId .
- Retornos: vazio
Função de Comandos de Registro de Processo
- 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 func deve verificar se a mensagem invoca um comando.Se assim for, execute a ação do comando e retorne verdadeiro.Retornar verdadeiro indica que a mensagem foi, de fato, um comando e não deve ser exibida.A função pode ser des registrada usando UnregisterProcessCommandsFunction.
- Retornos: vazio
- Exemplo:
-- Cole este exemplo em um ModuleScript dentro da pasta ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Equipamento de fatia de pizza equipamentopepperoni
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
Função de Comandos de Desregistro de Processo
- Descrição: Não registra um processador de comando (registrado por RegisterProcessCommandsFunction ) dado o identificador, functionId .
- Retornos: vazio
Eventos
ChannelizadoAdicionado
- Descrição: Dispara quando um canal é adicionado ao chat.
CanalRemovido
- Descrição: Dispara quando um canal é removido do chat.
Alto-falante adicionado
- Descrição: Dispara quando um orador é adicionado ao chat.
PalestranteRemovido
- Descrição: Dispara quando um orador é removido do chat.
Falante de Chat
Um Palestrante de Chat é a representação de uma entidade que pode falar em um Canal de Chat.Cada Player conectado ao jogo automaticamente tem um ChatSpeaker associado.Palestrantes de Chat adicionais podem ser construídos para não-usuários (como anunciantes ou mensagens de dica) usando ChatService:AddSpeaker().
Propriedades
Qual o nome
- Descrição: O nome do altofalante, usado para referenciar esse orador ao chamar muitas outras funções.
Métodos
Junte-se ao Canal
- Descrição: Adiciona o orador ao canal com o dado channelName
- Retornos: vazio
Sair do Canal
- Descrição: Remove o orador do canal com o dado channelName
- Retornos: vazio
Obter lista de canais
- Parâmetros:: Nenhum
- Descrição: Retorna uma lista de nomes de todos os canais em que o orador está.
- Retornos: array< string >
Está no canal IsInChannel
- Descrição: Retorna se o orador está no canal com o dado channelName .
- Retornos: bool
Diga Mensagem
- Retornos: Mensagem de Chat
Enviar Mensagem
- Parâmetros: : , : , : , :
- Descrição: Envia uma mensagem para o ChatSpeaker com o nome dado fromSpeaker.Se nenhum orador semelhante estiver no canal, este método cria um aviso e o orador não verá a mensagem.
- Retornos: vazio
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: vazio
Obter Jogador
- Parâmetros:: Nenhum
- Descrição: Retorna o objeto Player associado ao altofalante.Se o orador não for para um usuário (um bot), então isso retorna nil .
- Retornos: Player ou nil
DefinirDadosExtras
- Descrição: Define alguns dados adicionais para o orador sob um específico key .Sempre que o orador envia uma Mensagem de Chat, este dado extra é anexado à mensagem se nenhum for explicitamente fornecido com a mensagem.Por exemplo, isso permite que a cor do chat do altofalanteseja configurar.
- Retornos: vazio
ObterDados Extras
- Descrição: Retorna os dados extras associados ao dado dado , definido usando SetExtraData.
- Retornos: Variáveis
Definir Canal Principal
- Descrição: Define o orador para falar no canal fornecido. Dispara o MainChannelSet.
- Retornos: nil
Eventos
Mensagem Dita
Mensagem recebida
- Descrição: Disparado quando o orador recebe uma Mensagem de Chat de outro orador em um Canal de Chat
Mensagem do Sistema Recebida
- Descrição: Disparado quando o orador recebe um sistema Mensagem de Chat de um ChatChannel com o dado channelName.
Juntado ao Canal
Esquerda de Canal
Mutado
- Descrição: Disparado quando o orador estiver silenciado no ChatChannel com o dado channelName para o período dado (se fornecido).Pode ou não pode haver um reason fornecido.
Desativado
Dados extras atualizados
- Descrição: Disparado quando o valor padrão de uma chave nos dados extras do altofalanteé atualizado usando SetExtraData.
Set de Canal Principal
- Descrição: Disparado quando o canal principal dos oradores é alterado para o ChatChannel com o dado channelName.
Mensagem de Chat
Uma mensagem de bate-papo é uma estrutura de dados que representa uma mensagem enviada de um palestrante de bate-papo.Ela contém dados sobre a mensagem, incluindo o comprimento do texto, se o texto foi filtrado pelo Roblox e dados adicionais sobre a aparência da mensagem.
Propriedades
ID
- Tipo: int
- Descrição: Um identificador numérico único para a mensagem.
Do Palestrante
- Tipo: string:
- Descrição: O nome do Palestrante de Chat que enviou a mensagem.
Canal Original
- Tipo: string:
- Descrição: O nome do ChatChannel a partir do qual a mensagem originou.
Filtro IsFiltered
- Tipo: bool
- Descrição: Descreve se a mensagem é filtrada pelo Roblox (se for verdadeira, a mensagem será nil )
Comprimento da mensagem
- Tipo: int
- Descrição: A comprimento da mensagem. Você pode usar isso para gerar uma string hashada se a mensagem foi filtrada.
Mensagem
- Tipo: ): ou
- Descrição: O texto da mensagem. Esta propriedade será nil se IsFiltered for verdadeiro.
Tipo de Mensagem
- Tipo: string:
- Descrição: O tipo da mensagem. Esses tipos são descritos no módulo ChatConstants:
- Valores possíveis: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"
Tempo
Dados Extras
- Tipo: dicionário< string , Variante>
ChatChannel
ChatChannel é um objeto que armazena dados sobre um único canal, que é um meio pelo qual mensagens podem ser trocadas entre ChatSpeakers.Também tem propriedades de permissão de acesso que determinam a visibilidade das mensagens, juntamente com se os usuários podem entrar ou sair do canal manualmente (usando ou comandos).
Por padrão, cada usuário tem um Palestrante de Chat que é automaticamente adicionado aos canais de chat "Todos" e "Sistema" (embora, "Sistema" seja apenas de leitura).Se o usuário estiver em um Player.Team, ele também terá acesso a um canal apenas para aquela Equipe.
Propriedades
Qual o nome
- Tipo: string
- Descrição: O nome do canal, usado para referenciar o canal em outras funções.
Mensagem de Boas-Vindas
- Tipo: string
- Descrição: Uma mensagem para exibir quando um usuário se junta ao canal.
Entrável
- Tipo: bool
- Descrição: Determina se um usuário pode se juntar manualmente a 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.
Deixável
- 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.
Entrada Automática
- Tipo: bool
- Descrição: Determina se o Falante de Chat de um jogador vai automaticamente entrar no canal após entrar no jogo.Palestrantes não-usuários não se juntarão automaticamente a canais, mesmo quando essa propriedade for 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 chats de sussurro e chats de equipe.
Métodos
Palestrante de Expulsão
- Descrição: Remove o orador com o dado speakerName do canal, enviando uma mensagem tanto para o usuário quanto para o canal a partir do qual o usuário foi expulso.Se um reason for fornecido, a razão será incluída na mensagem.
- Retornos: vazio
Alto-falante Mudo
- Descrição: Silencia o orador com o dado speakerName no canal por um período especificado em segundos.Se duration for nil ou 0, o silêncio é indefinido.Se reason for fornecido, então uma mensagem será enviada para o canal com a razão incluída.
- Retornos: vazio
Desativar Palestrante
- Descrição: Desativa o orador com o dado speakerName no canal.
- Retornos: vazio
IsSpeakerMutado
- Descrição: Descreve se o orador com o dado speakerName está atualmente silenciado no canal.
- Retornos: bool
Obter Lista de Oradores
- Parâmetros:: Nenhum
- Descrição: Retorna uma lista que contém todos se os nomes do Falante de Chat estiverem atualmente no canal.
- Retornos: array< string >
Enviar Mensagem do Sistema
- Descrição: Envia uma mensagem do "Sistema" Falante de Chat para o canal.
- Retornos: vazio
Função de Registro de Mensagem de Filtrador
- Descrição: Registra uma função de filtro, func , identificada por functionId para o canal.A função de filtro será chamada com o ChatSpeaker, o ChatMessage e o string : nome do canal em que a mensagem originou.As alterações na mensagem persistirão e serão exibidas após a filtragem.
- Retornos: vazio
- Exemplo:
-- Cole este exemplo em um ModuleScript dentro da pasta ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Equipamento de fatia de pizza equipamentopepperoni
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
Função de mensagem de filtro não registrada
- Descrição: Não registra uma função de filtro (registrada por RegisterFilterMessageFunction) dada sua identificação, functionId .
- Retornos: vazio
Função de Comandos de Registro de Processo
- Descrição: Registra uma função de comando de processo, func , identificada por functionId para o chat.Antes que uma mensagem seja filtrada, ela passará por func (e outras funções registradas por este).A função func deve verificar se a mensagem invoca um comando.Se assim for, execute a ação do comando e retorne verdadeiro.Retornar verdadeiro indica que a mensagem foi, de fato, um comando e não deve ser exibida.A função pode ser des registrada usando UnregisterProcessCommandsFunction.
- Retornos: vazio
- Exemplo:
-- Cole este exemplo em um ModuleScript dentro da pasta ChatModules.
-- Este exemplo filtra uma palavra-chave e, se for bem-sucedido, 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)
-- Crie um canal e registre a função de filtro
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Função de Comandos de Desregistro de Processo
- Descrição: Não registra um processador de comando (registrado pelo RegisterProcessCommandsFunction) dado o identificador, functionId .
- Retornos: vazio
Eventos
MensagemPublicada
- Descrição: Dispara quando uma mensagem é postada no canal.
PalestranteJuntado
- Descrição: Dispara quando um Falante de Chat entra no canal.
Alto-falanteLeft
- Descrição: Dispara quando um Falante de Chat deixa o canal.
PalestranteMutado
- Descrição: Dispara quando um Falante de Chat foi silenciado no canal.
PalestranteDesativado
- Descrição: Dispara quando um Falante de Chat é desativado.