Puoi usare i seguenti moduli di chat per supportare i comportamenti lato server del Legacy Chat System tra cui:
- ChatService : Un singleton che gestisce tutti gli altri moduli di chat.
- ChatSpeaker : Entità che può creare messaggi in un ChatChannel; ogni Player avrà automaticamente un ChatSpeaker e gli bot possono chattare creando ChatSpeaker.
- ChatMessage : Container per il contenuto che un ChatSpeaker invia in un ChatChannel; contiene i metadati utilizzati per formattare il messaggio o aggiungere funzionalità extra ai comandi.
- ChatChannel : Un canale attraverso cui i Speaker di chat possono scambiare ChatMessage; anche usato per la chat di team e chat di WhatsApp.
ChatService
ChatService è un oggetto singolo che gestisce il comportamento lato server del sistema di chat Lua, come ChatChannels e ChatSpeakers .
Tutti ModuleScript s dentro la cartella ChatModuleScript dovrebbero restituire una funzione, e quella funzione verrà chiamata con il singolo chat.
Metodi
Aggiungi canale
- Descrizione: Crea un oggetto ChatChannel con il nome specificato e lo restituisce.
- Ritorna: ChatChannel
Rimuovi canale
- Descrizione: Rimuovi un canale con il nome specificato
- Ritorna: void
Ottieni canale
- Descrizione: Ritorna il canale con il nome specificato, o null se non esiste.
- Ritorna: ChatChannel
Aggiungi Altoparlante
- Descrizione: Crea e aggiungi un speaker alla chat con il nome specificato, poi lo restituisce.
- Ritorna: ChatSpeaker
RimuoviSpeaker
- Descrizione: Rimuove il speaker dalla chat con il nome specificato.
- Ritorna: void
OttieniSpeaker
- Descrizione: Ritorna lo speaker con il nome specificato, o nulla se non esiste.
- Ritorna: ChatSpeaker
Ottieni Channel List
- Parametri: nessuno
- Descrizione: Ritorna un elenco dei nomi di tutti i canali non privati nella chat.
- Ritorna: array< string >
OttieniAutoJoinChannelList
- Parametri: nessuno
- Descrizione: Ritorna un elenco dei nomi di tutti i canali nella chat con AutoJoin impostato su true.
- Ritorna: array< string >
Registra il messaggio di filtro
- Descrizione: Registra una funzione di filtro alla chat identificata da functionId . Tutte le modifiche al messaggio persistono e vengono visualizzate quando il messaggio passa attraverso tutte le altre funzioni di filtro. Questa funzione è passata il nome del parlante, l'oggetto del messaggio e il canale in cui il messaggio è originato.
- Ritorna: void
- Esempio:
-- Incolla questo esempio in unModuleScript nella cartella ChatModule.
-- Questo esempio filtra una parola chiave e, se riuscito, imposta il colore di chat del Messaggio
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verde
local function doFilter(speaker, messageObject, channelName)
-- Controlla se il messaggio contiene la parola chiave
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Rimuovi (Filtro) la parola chiave dalla Messaggio, impostando anche il ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
UnregisterFilterMessageFunction
- Descrizione: UnRegisters una funzione di filtro (registrata da RegisterFilterMessage) con il suo identificatore, functionId .
- Ritorna: void
Funzione di registrazione dei processi
- Descrizione: Registra una funzione di comando del processo alla chat identificata da functionId . Prima che un messaggio sia filtrato, passa attraverso func (e altre funzioni registrate da questo). La funzione 0> func0> dovrebbe controllare se il messaggio inv
- Ritorna: void
- Esempio:
-- Incolla questo esempio in unModuleScript nella cartella ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Attrezzatura per fette di pizza al peperone
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
UnregisterProcessCommandsFunction
- Descrizione: Unregisters un processore di comando (registrato da RegisterProcessCommandsFunction ) given the identifier, functionId .
- Ritorna: void
Eventi
Canale aggiunto
- Descrizione:: Fuochi quando viene aggiunto un canale alla chat.
Canale rimosso
- Descrizione:: Fuochi quando un canale viene rimosso dalla chat.
Altoparlanti aggiunti
- Descrizione:: Fira quando viene aggiunto un speaker alla chat.
Speaker rimosso
- Descrizione:: Spegne quando un oratore viene rimosso dalla chat.
Speaker di chat
Un Speaker di chat è la rappresentazione di un'entità che può parlare in un ChatChannel . Ogni Player 2> connesso al gioco ha automaticamente un 5>Speaker di chat5> associato. Gli Speaker aggiuntivi possono essere costruiti per non-utilizzatori (come annunciatori o messaggi di suggerimento) usando 8>ChatService:AddSpeaker()8>.
Proprietà
Nome
- Descrizione: Il nome del relatore, usato per fare riferimento a questo relatore mentre si chiama molte altre funzioni.
Metodi
Entra nel canale
- Descrizione: Aggiunge il speaker al canale con il channelName dato
- Ritorna: void
Lascia il canale
- Descrizione: Rimuove il speaker dal canale con il channelName fornito
- Ritorna: void
Ottieni Channel List
- Parametri: Nessuno
- Descrizione: Ritorna un elenco dei nomi di tutti i canali in cui si trova lo speaker.
- Ritorna: array< string >
IsInChannel
- Descrizione: Ritorna se il relatore è nel canale con il channelName .
- Ritorna: boolo
Dici il messaggio
- Parametri: string : message , 0> Library.Stringa0> : 3> chanネルName3> , dizionario< 6> Library.Stringa6> , variante> 9> extraData 9>
- Descrizione: Causa il parlante di dire message e restituire l'oggetto ChatMessage creato facendo così.
- Ritorna: ChatMessage
Invia messaggio
- Parametri: string : message , 0> Library.Stringa0> : 3> canale3> , 6> Library.Stringa6> : 9> fromSpeaker 9>
- Descrizione: Invia un messaggio al ChatSpeaker con il nome fromSpeaker dato. Se nessun tale speaker è nel canale, questo metodo crea un avviso e il leader non vedrà il Messaggio.
- Ritorna: void
Invia messaggio di sistema
- Descrizione: Invia un messaggio del sistema al ChatChannel con il dato channelName . Se lo speaker non è nel canale, allora questo messaggio creerà un avviso e altri speaker nel canale non vedranno il Messaggio.
- Ritorna: void
OttieniPlayer
- Parametri: Nessuno
- Descrizione: Ritorna l'oggetto Player associato con lo speaker. Se lo speaker non è per un utente (un bot) allora questo restituisce nil .
- Ritorna: Player o nil
Imposta dati extra
- Descrizione: Imposta alcuni dati extra per il parlante sotto un determinato key . Ogni volta che il parlante invia un ChatMessage , questo dato extra viene allegato al messaggio se nessuno è esplicitamente fornito con il Messaggio. Ad esempio, questo consente al colore della chat del parlante di essere Impostare.
- Ritorna: void
Ottieni dati extra
- Descrizione: Ritorna i dati extra associati all'key , impostati usando SetExtraData.
- Ritorna: Variante
Imposta canale principale
- Descrizione:: Imposta ilSpeaker per parlare nel canale fornito. Fires MainChannelSet.
- Ritorna: nil
Eventi
Messaggio detto
Messaggio ricevuto
- Descrizione: Viene attivato quando il parlante riceve un ChatMessage da un altro parlante su un ChatChannel
RicevutoSystemMessage
- Descrizione: Fired when the speaker riceve a system ChatMessage da un ChatChannel con the given 0> channelName0> .
CanaleJoined
- Descrizione: Viene attivato quando lo speaker si unisce al ChatChannel con il channelName specificato.
Canale di sinistra
Muto
- Parametri: string : channelName , 0> Library.Stringa0> : 3> reason = null3> , 6> int6> : 9> duration 9> = 0
- Descrizione: 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.
Non disattivato
Aggiornamento dati extra
- Descrizione: Aggiornato quando il valore predefinito di una chiave negli extra dati del lettore viene aggiornato utilizzando SetExtraData.
MainChannelSet
- Descrizione: Fired when the speakers main channel is changed to the ChatChannel with the given channelName .
Messaggio di chat
Un ChatMessage è una struttura dei dati che rappresenta un messaggio inviato da un ChatSpeaker. Contiene dati sul Messaggio, tra cui la lunghezza del testo, se il testo è stato filtrato da Roblox e dati extra sulla aspettodel Messaggio.
Proprietà
ID
- Tipo: int
- Descrizione: Un identificatore numerico unico per il Messaggio.
Dall'alto
- Tipo: string :
- Descrizione: Il nome del ChatSpeaker che ha inviato il Messaggio.
Canale originale
- Tipo: string :
- Descrizione: Il nome del ChatChannel da cui il messaggio proviene.
È filtrato
- Tipo: boolo
- Descrizione: Descrive se il messaggio è filtrato da Roblox (se vero, il messaggio sarà nil )
Lunghezza del messaggio
- Tipo: int
- Descrizione: La lunghezza del Messaggio. Puoi usarlo per generare una stringa hashed-out se il messaggio è stato filtrato.
Messaggio
- Descrizione: Il testo del Messaggio. Questa proprietà sarà nil se è vero IsFiltered.
Tipo di messaggio
- Tipo: string :
- Descrizione: Il tipo del Messaggio. Questi tipi sono descritti nel modulo ChatConstraints:
- Possibili valori: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>
Tempo
Extra dati
- Tipo: dizionario< string , Variante>
Canale di chat
ChatChannel è un oggetto che memorizza i dati su un singolo canale, che è un mezzo per cui i messaggi possono essere scambiati tra ChatSpeakers . Ha anche proprietà di accesso che determinano la visibilità dei messaggi insieme all'evento che gli utenti possono unirsi o lasciare il canale manualmente (utilizzando /join o 0> /leave0> comandi).
Per impostazione predefinita, ogni utente ha un Speaker di chat che viene automaticamente aggiunto ai canali di chat "Tutti" e "Sistema" (anche se, "Sistema" è letto solo). Se l'utente è su un Player.Team, avrà anche accesso a un canale per solo quell'Team.
Proprietà
Nome
- Tipo: string
- Descrizione: Il nome del canale, usato per fare riferimento al canale in altre funzioni.
Messaggio di benvenuto
- Tipo: string
- Descrizione:: Un messaggio da visualizzare quando un utente si unisce al canale.
Accessibile
- Tipo: boolo
- Descrizione: Determina se un utente può unirsi manualmente a un canale utilizzando il comando /join . Un utente può essere ancora aggiunto a un canale utilizzando il comando ChatSpeaker:JoinChannel() o altri metodi anche se questa proprietà è falsa.
Lascia
- Tipo: boolo
- Descrizione: Determina se un utente può lasciare manualmente un canale utilizzando il comando /leave. Un utente può essere ancora rimosso da un canale utilizzando ChatSpeaker:LeaveChannel() o altri metodi anche se questa proprietà è falsa.
Partecipazione automatica
- Tipo: boolo
- Descrizione: Determina se il ChatSpeaker di un Giocatoresi unirà automaticamente al canale quando si unisce al Gioco. I non-utenti non si uniranno automaticamente ai canali, anche quando questa proprietà è vera (puoi usare ChatSpeaker:JoinChannel() per farlo).
Privato
- Tipo: boolo
- Descrizione: Determina se il canale sarà incluso nella lista dei canali restituiti da ChatService:GetChannelList() . Questo per i chat di sottovento e team chat.
Metodi
Speaker di Kick
- Descrizione: Rimuove il speaker con il speakerName dal canale, inviando un messaggio sia all'utente che al canale da cui l'utente è stato cacciato. Se viene fornito un reason , il motivo sarà incluso nel Messaggio.
- Ritorna: void
MutoSpeaker
- Parametri: string : speakerName , 0> Library.Stringa0> : 3> reason = null3> , 6> int6> 9> duration = 0 9>
- Descrizione: Disattiva lo speaker con il speakerName specificato nella canzone per una durata specificata in secondi. Se duration è nullo o 0, il mute è indefinito. Se 0> reason0> è fornito, viene inviato un messaggio al canale con il motivo incluso.
- Ritorna: void
Disattiva lo Speaker
- Descrizione: Disattiva il giocatore con il speakerName inserito nel canale.
- Ritorna: void
IsSpeakerMuto
- Descrizione: Descrive se il speakerName con l'attribuzione attuale è attualmente disattivato nel canale.
- Ritorna: boolo
Ottieni la lista dei relatori
- Parametri: Nessuno
- Descrizione: Ritorna un elenco contenente tutti i nomi del ChatSpeaker attualmente nel canale.
- Ritorna: array< string >
Invia messaggio di sistema
- Descrizione: Invia un messaggio dal "Sistema" ChatSpeaker al canale.
- Ritorna: void
Registra il messaggio di filtro
- Descrizione: Registra una funzione di filtro, func , identificata da functionId al canale. La funzione di filtro verrà chiamata con il 0> ChatSpeaker 0> , il 3> ChatMessage3> e il 6>Library.Stringa 6> : nome del canale in cui il mess
- Ritorna: void
- Esempio:
-- Incolla questo esempio in unModuleScript nella cartella ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Attrezzatura per fette di pizza al peperone
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
UnregisterFilterMessageFunction
- Descrizione: UnRegisters una funzione di filtro (registrata da RegisterFilterMessage) con il suo identificatore, functionId .
- Ritorna: void
Funzione di registrazione dei processi
- Descrizione: Registra una funzione di comando del processo, func , identificata da functionId nella chat. Prima che un messaggio venga filtrato, passa attraverso functionId (e altre funzioni registrate da questo) prima che il mess
- Ritorna: void
- Esempio:
-- Incolla questo esempio in unModuleScript nella cartella ChatModule.
-- Questo esempio filtra una parola chiave e, se riuscito, imposta il colore di chat del Messaggio
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- verde
local function doFilter(speaker, messageObject, channelName)
-- Controlla se il messaggio contiene la parola chiave
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Rimuovi (Filtro) la parola chiave dalla Messaggio, impostando anche il ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Crea un canale e registra la funzione di filtro
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
UnregisterProcessCommandsFunction
- Descrizione: UnRegisters un elaboratore di comandi (registrato da RegisterProcessCommandsFunction) in base all'identificatore, functionId .
- Ritorna: void
Eventi
MessaggioPubblicato
- Descrizione:: Fuochi quando un messaggio viene pubblicato nel canale.
SpeakerJoint
- Descrizione: Fuori quando un ChatSpeaker si unisce al canale.
SпиelfareSinistra
- Descrizione: Fuori dal canale quando un Speaker di chat lascia il canale.
Speaker disattivato
- Descrizione:: Fare fuoco quando un ChatSpeaker è stato disattivato nel canale.
Altoparlanti disattivati
- Descrizione: Fires when a ChatSpeaker is unmuted.