Puoi utilizzare i seguenti moduli di chat per supportare i comportamenti lato server del sistema di chat Legacy inclusi:
- ChatService : Un singleton che gestisce tutti gli altri moduli di chat.
- ChatSpeaker : Un'entità che può creare messaggi in un ChatChannel; ciascuno Player avrà automaticamente un ChatSpeaker e i bot potranno chattare creando ChatSpeaker.
- ChatMessage : Un container per il contenuto che un Oratore di Chat invia a un ChatChannel; contiene metadati utilizzati per formattare il messaggio o aggiungere funzionalità extra ai comandi.
- ChatChannel : Un canale attraverso cui i relatori di chat possono scambiare il messaggio di chat; utilizzato anche per la chat di squadra e la chat sussurrata.
Servizio chat
ChatService è un oggetto singolo che gestisce il comportamento lato server del sistema di chat Lua, come ChatChannels e ChatSpeakers.
Tutti ModuleScript s all'interno della cartella Moduli di chat dovrebbero restituire una funzione e quella funzione verrà chiamata con il singolo ChatService.
Metodi
AggiungiChannel
- Descrizione: Crea un oggetto ChatChannel con il nome specificato e lo restituisce.
- Restituzioni: ChatChannel
RimuoviChannel
- Descrizione: Rimuovi un canale con il nome indicato
- Restituzioni: void
OttieniChannel
- Descrizione: Restituisce il canale con il nome indicato, o nil se non esiste.
- Restituzioni: ChatChannel
AggiungiSpeaker
- Descrizione: Creare e aggiungere un oratore alla chat con il nome indicato, quindi restituirlo.
- Restituzioni: Speaker di chat
RimuoviSpeaker
- Descrizione: Rimuove l'oratore dalla chat con il nome indicato.
- Restituzioni: void
Ottieni Speaker
- Descrizione: Restituisce l'oratore con il nome indicato, o nil se non esiste.
- Restituzioni: Speaker di chat
OttieniChannelList
- Parametri: nulla
- Descrizione: Restituisce un elenco dei nomi di tutti i canali non privati nella chat.
- Restituzioni: array< string >
Ottieni la lista di canali di join automatico
- Parametri: nulla
- Descrizione: Restituisce una lista dei nomi di tutti i canali nella chat con AutoJoin impostato su vero.
- Restituzioni: array< string >
Funzione di registro del messaggio FilterMessage
- Descrizione: Registra una funzione filtro alla chat identificata da functionId .Qualsiasi modifica al messaggio persisterà e verrà visualizzata quando il messaggio passa attraverso tutte le altre funzioni di filtro.Questa funzione viene passata il nome dell'oratore, l'oggetto del messaggio e il canale in cui il messaggio è originato.
- Restituzioni: void
- Esempio:
-- Incolla questo esempio in un ModuleScript all'interno della 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)
-- Verifica 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 dal 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
Funzione di messaggio di filtro non registrata
- Descrizione: Unregistra una funzione filtro (registrata da RegisterFilterMessageFunction) dato il suo identificatore, functionId .
- Restituzioni: void
Funzione dei comandi di registrazioneProcesso
- Descrizione: Registra una funzione di comando di processo alla chat identificata da functionId .Prima che un messaggio venga filtrato, passerà attraverso func (e altre funzioni registrate da questo).La funzione func dovrebbe controllare se il messaggio invochi un comando.Se è così, esegui l'azione del comando e restituisci vero.Il ritorno del vero indica che il messaggio era effettivamente un comando e non dovrebbe essere visualizzato.La funzione può essere dis registrata utilizzando UnregisterProcessCommandsFunction.
- Restituzioni: void
- Esempio:
-- Incolla questo esempio in un ModuleScript all'interno della 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
Funzione UnregisterProcessCommands
- Descrizione: Unregistra un processore di comandi (registrato da RegisterProcessCommandsFunction ) dato l'identificatore, functionId .
- Restituzioni: void
Eventi
Channelaggiunto
- Descrizione: Brucia quando viene aggiunto un canale alla chat.
CanaleRimosso
- Descrizione: Brucia quando un canale viene rimosso dalla chat.
Altoparlante aggiunto
- Descrizione: Brucia quando viene aggiunto un oratore alla chat.
AltoparlanteRimosso
- Descrizione: Brucia quando un oratore viene rimosso dalla chat.
Speaker di chat
Un Speaker di chat è la rappresentazione di una entità che può parlare in un ChatChannel .Ogni Player connesso al gioco viene automaticamente dotato di un ChatSpeaker associato.Altri Speaker di chat possono essere costruiti per non-utenti (come annunciatori o messaggi suggerimento) utilizzando ChatService:AddSpeaker() .
Proprietà
Nome
- Descrizione: Il nome dell'oratore, utilizzato per fare riferimento a questo oratore durante l'esecuzione di molte altre funzioni.
Metodi
Unisciti al channel
- Descrizione: Aggiunge l'oratore al canale con il dato channelName
- Restituzioni: void
LasciaChannel
- Descrizione: Rimuove l'oratore dal canale con il dato channelName
- Restituzioni: void
OttieniChannelList
- Parametri: Nessuno
- Descrizione: Restituisce un elenco dei nomi di tutti i canali in cui è il relatore.
- Restituzioni: array< string >
È nel canale
- Descrizione: Restituisce se l'oratore è nel canale con il dato channelName .
- Restituzioni: bool
DìMessaggio
- Restituzioni: Messaggio di chat
Invia messaggio
- Parametri: : , : , : , :
- Descrizione: Invia un messaggio al Speaker di chat con il nome fromSpeaker.Se non c'è un tale oratore nel canale, questo metodo crea un avviso e l'oratore non vedrà il Messaggio.
- Restituzioni: void
Invia messaggio sistema
- Descrizione: Invia un messaggio di sistema al ChatChannel con il channelName dato .Se l'oratore non è nel canale, questo messaggio creerà un avviso e gli altri oratori nel canale non vedranno il Messaggio.
- Restituzioni: void
OttieniPlayer
- Parametri: Nessuno
- Descrizione: Restituisce l'oggetto Player associato all'oratore.Se l'oratore non è per un utente (un bot) allora questo restituisce nil .
- Restituzioni: Player o nil
ImpostaExtraData
- Descrizione: Imposta alcuni dati extra per il relatore sotto un particolare key .Ogni volta che l'oratore invia un Messaggio di chat questo dato extra viene allegato al messaggio se nessuno viene fornito esplicitamente con il messaggio.Ad esempio, questo consente di Impostareil colore della chat dell'oratore.
- Restituzioni: void
Ottieni dati extra
- Descrizione: Restituisce i dati extra associati al dato dato , impostati usando SetExtraData.
- Restituzioni: Variante
SetMainChannel
- Descrizione: Imposta l'oratore a parlare nel canale fornito. Avvia MainChannelSet.
- Restituzioni: nil
Eventi
Messaggio detto
Messaggio ricevuto
- Descrizione: Sparato quando l'oratore riceve un Messaggio di chat da un altro oratore su un Canale di chat
Messaggio di sistema ricevuto
- Descrizione: Sparato quando l'oratore riceve un sistema ChatMessage da un ChatChannel con il dato channelName .
Canale aderito
CanaleLeft
Silenziato
- Descrizione: Viene licenziato quando l'oratore è disattivato sul ChatChannel con il dato channelName per la durata indicata (se fornito).Potrebbe o non potrebbe esserci un reason fornito.
Disattivato
Dati aggiornati extra
- Descrizione: Viene licenziato quando il valore predefinito di una chiave nei dati extra dell'oratore viene aggiornato utilizzando SetExtraData.
Set principale del canale
- Descrizione: Viene licenziato quando il canale principale degli speaker viene cambiato in ChatChannel con il channelName dato.
Messaggio di chat
Un messaggio di chat è una struttura di dati che rappresenta un messaggio inviato da un oratore di chat .Contiene dati sul Messaggio, inclusa la lunghezza del testo, se il testo è stato filtrato da Roblox e dati supplementari sull'aspetto del Messaggio.
Proprietà
ID
- Tipo: int
- Descrizione: Un identificatore numerico univoco per il Messaggio.
Da Speaker
- Tipo: string :
- Descrizione: Il nome del Speaker di chat che ha inviato il Messaggio.
Canale originale
- Tipo: string :
- Descrizione: Il nome del ChatChannel da cui è originato il messaggio.
È filtrato
- Tipo: bool
- Descrizione: Descrive se il messaggio viene filtrato da Roblox (se è vero, il messaggio sarà nil )
Length del messaggio
- Tipo: int
- Descrizione: La lunghezza del Messaggio. Puoi usarlo per generare una stringa hashed se il messaggio è stato filtrato.
Messaggio
- Descrizione: Il testo del Messaggio. Questa proprietà sarà nil se IsFiltered è vero.
Tipo di messaggio
- Tipo: string :
- Descrizione: Il tipo del Messaggio. Questi tipi sono descritti nel modulo Chatasets:
- Valori possibili: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"
Tempo
- Tipo: int
- Descrizione: Un timestamp; il valore di os.time() al momento della Creazionidel Messaggio.
Dati extra
- Tipo: dizionario< string , Variante>
Channel di chat
ChatChannel è un oggetto che memorizza dati su un singolo canale, che è un mezzo con cui possono essere scambiati messaggi tra ChatSpeakers.Ha anche proprietà di autorizzazione di accesso che determinano la visibilità dei messaggi insieme alla possibilità per gli utenti di unirsi o lasciare il canale manualmente (utilizzando /join o /leave comandi).
Per impostazione predefinita, ogni utente ha un Speaker di chat che viene aggiunto automaticamente ai canali di chat "Tutti" e "Sistema" (anche se, "Sistema" è solo in lettura).Se l'utente è su un Player.Team , avrà anche accesso a un canale solo per quella squadra.
Proprietà
Nome
- Tipo: string
- Descrizione: Il nome del canale, utilizzato per fare riferimento al canale in altre funzioni.
WelcomeMessage
- Tipo: string
- Descrizione: Un messaggio da mostrare quando un utente si unisce al canale.
Joinabile
- Tipo: bool
- Descrizione: Determina se un utente può unirsi manualmente a un canale utilizzando il comando /join.Un utente può ancora essere aggiunto a un canale utilizzando ChatSpeaker:JoinChannel() o altri mezzi anche se questa proprietà è falsa.
Lasciabile
- Tipo: bool
- Descrizione: Determina se un utente può lasciare manualmente un canale utilizzando il comando /leave.Un utente può ancora essere rimosso da un canale utilizzando ChatSpeaker:LeaveChannel() o altri mezzi anche se questa proprietà è falsa.
Unione automatica
- Tipo: bool
- Descrizione: Determina se il Speaker di chat di un Giocatoresi unirà automaticamente al canale al momento dell'adesione al Gioco.Gli oratori non utenti non si uniranno automaticamente ai canali, anche quando questa proprietà è vera (puoi usare ChatSpeaker:JoinChannel() per farlo).
Privato
- Tipo: bool
- Descrizione: Determina se il canale sarà incluso nell'elenco dei canali restituiti da ChatService:GetChannelList() .Questo per le chat a sussurro e le chat di squadra.
Metodi
Speaker di calcio
- Descrizione: Rimuove l'oratore con il dato speakerName dal canale, inviando un messaggio sia all'utente che al canale da cui l'utente è stato espulso.Se viene fornito un reason, il motivo verrà incluso nel Messaggio.
- Restituzioni: void
MutoSpeaker
- Descrizione: Muta il relatore con il dato speakerName nel canale per una durata specificata in secondi.Se duration è nil o 0, il muto è indeterminato.Se reason viene fornito, verrà inviato un messaggio al canale con il motivo incluso.
- Restituzioni: void
Speaker disattivato
- Descrizione: Unmutes il relatore con il dato speakerName nel canale.
- Restituzioni: void
IsSpeakerMutato
- Descrizione: Descrive se l'oratore con il dato speakerName è attualmente muto nel canale.
- Restituzioni: bool
OttieniSpeakerList
- Parametri: Nessuno
- Descrizione: Restituisce una lista che contiene tutti se i nomi del Speaker di chat attualmente nel canale.
- Restituzioni: array< string >
Invia messaggio sistema
- Descrizione: Invia un messaggio dal "Sistema" ChatSpeaker al canale.
- Restituzioni: void
Funzione di registro del messaggio FilterMessage
- Descrizione: Registra una funzione filtro, func , identificata da functionId al canale.La funzione filtro verrà chiamata con il ChatSpeaker, il ChatMessage e il string : nome del canale in cui è originato il messaggio.Le modifiche al messaggio persisteranno e verranno visualizzate dopo il filtraggio.
- Restituzioni: void
- Esempio:
-- Incolla questo esempio in un ModuleScript all'interno della 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
Funzione di messaggio di filtro non registrata
- Descrizione: Unregistra una funzione filtro (registrata da RegisterFilterMessageFunction) dato il suo identificatore, functionId .
- Restituzioni: void
Funzione dei comandi di registrazioneProcesso
- Descrizione: Registra una funzione di comando di processo, func , identificata da functionId alla chat.Prima che un messaggio venga filtrato, passerà attraverso func (e altre funzioni registrate da questo).La funzione func dovrebbe controllare se il messaggio invochi un comando.Se è così, esegui l'azione del comando e restituisci vero.Il ritorno del vero indica che il messaggio era effettivamente un comando e non dovrebbe essere visualizzato.La funzione può essere dis registrata utilizzando UnregisterProcessCommandsFunction.
- Restituzioni: void
- Esempio:
-- Incolla questo esempio in un ModuleScript all'interno della 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)
-- Verifica 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 dal 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 filtro
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Funzione UnregisterProcessCommands
- Descrizione: Unregistra un processore di comandi (registrato da RegisterProcessCommandsFunction) dato l'identificatore, functionId .
- Restituzioni: void
Eventi
Messaggio pubblicato
- Descrizione: Brucia quando un messaggio viene pubblicato nel canale.
AltoparlanteUnito
- Descrizione: Brucia quando un Speaker di chat si unisce al canale.
AltoparlanteLeft
- Descrizione: Brucia quando un Speaker di chat lascia il canale.
Altoparlante spento
- Descrizione: Brucia quando un Speaker di chat è stato disattivato nel canale.
Oratore disattivato
- Descrizione: Brucia quando un Speaker di chat è disattivato.