Sie können die folgenden Chat-Module verwenden, um die serverseitigen Verhaltensweisen des Legacy Chat-Systems zu unterstützen, einschließlich:
- ChatService : Ein Singleton, das alle anderen Chat-Module verwaltet.
- ChatSpeaker : Ein Objekt, das Nachrichten in einem ChatChannel erstellen kann; Jeder Player wird automatisch einen ChatSpeaker haben und Bots können durch das Erstellen von ChatSpeakers chatten.
- ChatMessage : Ein Container für Inhalte, die ein ChatSpeaker an einen ChatChannel sendet; enthält Metadaten, die verwendet werden, um die Nachricht zu formatieren oder zusätzliche Funktionen für Befehle hinzuzufügen.
- ChatChannel : Ein Kanal, durch den ChatSpeaker ChatMessage austauschen können; auch für Team-Chat und Whisper-Chat verwendet.
ChatService
ChatService ist ein Singleton-Objekt, das das serverseitige Verhalten des Lua-Chat-Systems behandelt, wie ChatChannels und ChatSpeakers.
Alle ModuleScript s innerhalb der ChatModule-Ordner sollten eine Funktion zurückgeben, und diese Funktion wird mit dem ChatService-Singleton aufgerufen.
Methoden
Channel hinzufügen
- Beschreibung: Erstellt ein ChatChannel-Objekt mit dem angegebenen Namen und gibt es zurück.
- Rückgaben: ChatChannel
Kanal entfernen
- Beschreibung: Entferne einen Kanal mit dem angegebenen Namen
- Rückgibt: void
Channel erhalten
- Beschreibung: gibt den Kanal mit dem angegebenen Namen oder null zurück, wenn er nicht existiert.
- Rückgaben: ChatChannel
Lautsprecher hinzufügen
- Beschreibung: Erstellen und hinzufügen Sie einen Sprecher zum Chat mit dem angegebenen Namen und geben Sie ihn dann zurück.
- Rückgaben: ChatSpeaker
Lautsprecher entfernen
- Beschreibung: Entfernt den Sprecher aus dem Chat mit dem angegebenen Namen.
- Rückgibt: void
Lautsprecher
- Beschreibung: Gibt den Sprecher mit dem angegebenen Namen oder null zurück, wenn er nicht existiert.
- Rückgaben: ChatSpeaker
Channel-Liste erhalten
- Parameter: Keine
- Beschreibung: gibt eine Liste der Namen aller nicht privaten Kanäle im Chat zurück.
- Rückgibt: Arrays< string >
Holen Sie sich die Autojoint-Kanalliste
- Parameter: Keine
- Beschreibung: gibt eine Liste der Namen aller Kanäle im Chat mit AutoJoin auf wahr zurück.
- Rückgibt: Arrays< string >
RegisterFilterMessageFunction
- Beschreibung: Registriert eine Filterfunktion auf den Chat, der von functionId identifiziert ist. Alle Änderungen an der Nachricht bleiben bestehen und werden angezeigt, wenn die Nachricht durch alle anderen Filterfunktionen durchkommt. Diese Funktion überträgt den Namen des Lautsprecher, das Nachrichten-Objekt und den Kanal, in dem die Nachricht ankommt.
- Rückgibt: void
- Beispiel:
-- Fügen Sie dieses Beispiel in ein ModulScript innerhalb der ChatModule-Ordner ein.
-- Dieser Filter verwendet ein Schlüsselwort, und wenn er erfolgreich ist, setzt er die ChatColor der Nachricht
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- grün
local function doFilter(speaker, messageObject, channelName)
-- Überprüfen Sie, ob die Nachricht das Schlüsselwort enthält
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Entferne (Filter) das Schlüsselwort aus der Nachricht und stelle auch die ChatColor ein
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
- Beschreibung: Ein Filterfunktion (registriert von RegisterFilterMessageFunction) mit der ID, functionId .
- Rückgibt: void
RegisterProcessCommandsFunction
- Beschreibung: Registriert eine Prozess-Command-Funktion für den Chat, der von functionId identifiziert ist. Bevor eine Nachricht gefiltert wird, wird sie durch func (und andere von diesem registrierte Funktionen) durchgeführt. Die Funktion 0> func
- Rückgibt: void
- Beispiel:
-- Fügen Sie dieses Beispiel in ein ModulScript innerhalb der ChatModule-Ordner ein.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Peperoni-Pizza-Scheibe Ausrüstung
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
UnregisterProcessingCommandsFunction
- Beschreibung:: Ein Register-Prozessor (registriert von RegisterProcessCommandsFunction ) mit der Identifikator-Anzeige, functionId .
- Rückgibt: void
Ereignisse
Kanal hinzugefügt
- Beschreibung: Brände, wenn ein Kanal dem Chat hinzugefügt wird.
Kanal entfernt
- Beschreibung: Brände, wenn ein Kanal aus dem Chat entfernt wird.
Lautsprecher hinzugefügt
- Beschreibung: Brände, wenn ein Sprecher dem Chat hinzugefügt wird.
Lautsprecher entfernt
- Beschreibung: Brände, wenn ein Sprecher aus dem Chat entfernt wird.
ChatSpeaker
Ein ChatSpeaker ist die Repräsentation einer Entität, die in einem ChatChannel sprechen kann. Jeder Player , der mit dem Spiel verbunden ist, hat automatisch einen angeschlossenen ChatSpeaker. Zusätzliche ChatSpeakers können für Nichtbenutzer (z. B. Ankündiger oder Hinweisnachrichten) mit 2>ChatService:AddSpeaker()2> gebaut werden.
Eigenschaften
Name
- Beschreibung: Der Name des Lautsprecher, der verwendet wird, um auf diesen Sprecher zu verweisen, während viele andere Funktionen aufgerufen werden.
Methoden
Kanal beitreten
- Beschreibung: Fügt den Sprecher dem Kanal mit dem angegebenen channelName hinzu
- Rückgibt: void
Kanal verlassen
- Beschreibung: Entfernt den Sprecher aus dem Kanal mit dem angegebenen channelName
- Rückgibt: void
Channel-Liste erhalten
- Parameter: Keine
- Beschreibung: gibt eine Liste der Namen aller Kanäle zurück, in denen sich der Sprecher befindet.
- Rückgibt: Arrays< string >
IstInChannel
- Beschreibung: gibt zurück, ob der Sprecher in dem Kanal mit dem angegebenen channelName ist.
- Rückgaben: Boolean
SagNachricht
- Argumente: string : message , 0> Library.String0> : 3> channelName3>, dictionary< 6> Library.String6>, Variant> 9> extraData 9>
- Beschreibung: Verursacht, dass der Sprecher message sagt und das erstellte ChatMessage -Objekt zurückgibt.
- Rückgaben: ChatMessage
Nachricht senden
- Argumente:: string : message , 0> Library.String0> : 3> Kanal3>, 6> Library.String6> : 9> fromSpeaker 9>
- Beschreibung: Senden Sie eine Nachricht an den ChatSpeaker mit dem angegebenen fromSpeaker Namen. Wenn kein solcher Sprecher im Kanal ist, erstellt diese Methode einen Warnung und der Sprecher wird die Nachricht nicht sehen.
- Rückgibt: void
Systemnachricht senden
- Beschreibung: Senden Sie eine Systemnachricht an den ChatChannel mit dem angegebenen channelName . Wenn der Sprecher nicht im Kanal ist, wird diese Nachricht ein Warnung und andere Sprecher im Kanal nicht die Nachricht sehen.
- Rückgibt: void
Spieler bekommen
- Parameter: Keine
- Beschreibung: gibt das zugeordnete Player -Objekt des Lautsprecherzurück. Wenn der Sprecher nicht für einen Benutzer (ein Bot) ist, gibt dies nil zurück.
- Rückgaben: Player oder nil
SetExtraDaten
- Beschreibung: Setzt einige zusätzliche Daten für den Sprecher unter einem bestimmten key . Wenn der Sprecher eine ChatMessage sendet, wird diese zusätzliche Daten an den Nachricht angeschlossen, wenn keine explizit mit der Nachricht angegeben wird. Zum Beispiel ermöglicht dies, dass die Chatfarbe des Lautsprecherfestlegenwird.
- Rückgibt: void
GetExtraData
- Beschreibung: gibt die mit dem angegebenen key verbundenen zusätzlichen Daten zurück, die mit SetExtraData festgelegt wurden.
- Rückgibt: Variant
SetMainChannel
- Beschreibung: Setzt den Sprecher in den angegebenen Kanal zu sprechen. Feuert MainChannelSet ab.
- Rückgaben: nil
Ereignisse
Gesagte Nachricht
Erhaltene Nachricht
- Beschreibung: Feuert, wenn der Sprecher eine ChatMessage von einem anderen Sprecher auf einem ChatChannel erhält
Systemnachricht erhalten
- Beschreibung: Feuert, wenn der Sprecher ein System ChatMessage von einem ChatChannel mit dem angegebenen 0>channelName0> erhält.
ChannelBeigetreten
Kanal links
- Beschreibung: Wird abgefeuert, wenn der Sprecher einen ChatChannel mit dem angegebenen channelName verlässt.
Gestellt
- Argumente: string : channelName , 0>Library.String0> : 3> reason = null3> , 6>int6> : 9>duration 9> = 0
- Beschreibung: Feuert, wenn der Sprecher auf dem ChatChannel mit dem angegebenen channelName für die angegebene Dauer (wenn vorhanden) aufruft. Es kann oder nicht ein 0> reason0> angegeben sein.
Nicht mehr stummgeschaltet
- Beschreibung: Wird abgefeuert, wenn der Sprecher auf dem ChatChannel mit dem angegebenen channelName muted ist.
ExtraDaten aktualisiert
- Beschreibung:: Wird ausgelöst, wenn der Standardwert eines Schlüssels in den zusätzlichen Daten des Lautsprechermit SetExtraData aktualisiert wird.
Hauptkanal-Set
- Beschreibung: Wird ausgelöst, wenn der Hauptkanal der Sprecher in den Chat-Kanal mit dem angegebenen channelName gewechselt wird.
ChatNachricht
Ein ChatMessage ist eine Datenstruktur, die eine Nachricht repräsentiert, die von einem ChatSpeaker gesendet wird. Es enthält Daten über die Nachricht, einschließlich der Länge des Textes, ob der Text von Roblox gefiltert wurde und zusätzliche Daten über das Aussehen der Nachricht.
Eigenschaften
ID
- Typ: int
- Beschreibung:: Ein einzigartiger numerischer Identifikator für die Nachricht.
VonSpeaker
- Typ: string :
- Beschreibung: Der Name des ChatSpeakers, der die Nachricht gesendet hat.
OriginalChannel
- Typ: string :
- Beschreibung:: Der Name des ChatChannel , von dem die Nachricht stammt.
IstFiltered
- Typ: bool
- Beschreibung: Beschreibt, ob die Nachricht von Roblox gefiltert wird (wenn ja, Nachricht wird nil )
Nachrichtenlänge
- Typ: int
- Beschreibung: Die Länge der Nachricht. Du kannst dies verwenden, um einen hashed-out-String zu generieren, wenn die Nachricht gefiltert wird.
Nachricht
- Beschreibung: Der Text der Nachricht. Diese Eigenschaft wird nil sein, wenn IsFiltered wahr ist.
Nachrichtenmodus
- Typ: string :
- Beschreibung:: Die Art der Nachricht. Diese Arten werden im ChatConstraints-Modul beschrieben:
- Mögliche Werte: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore" 6> , 9> "Whisper"
Zeit
- Typ: int
- Beschreibung: Ein Zeitmarke; der Wert von os.time() zum Zeitpunkt der Schöpfungder Nachricht.
Zusätzliche Daten
- Typ: Diktum< string , Variant>
Chat-Kanal
ChatChannel ist ein Objekt, das Daten über einen einzelnen Kanal speichert, der ein Mittel ist, mit dem Nachrichten zwischen ChatSpeakers getauscht werden können. Es hat auch Zugriff-Eigenschaften, die die Sichtbarkeit der Nachrichten beeinflussen, einschließlich der Möglichkeit, dass Benutzer den Kanal manuell beitreten oder verlassen (mit /join oder 0> /leave0>
Standardmäßig hat jeder Benutzer einen ChatSpeaker, der automatisch zu den Chat-Kanälen „Alle“ und „System“ hinzugefügt wird (obwohl „System“ nur gelesen wird). Wenn der Benutzer in einem Player.Team ist, haben Sie auch Zugriff auf einen Kanal für dieses Team.
Eigenschaften
Name
- Typ: string
- Beschreibung: Der Name des Kanals, verwendet, um den Kanal in anderen Funktionen zu referenzieren.
Willkommensnachricht
- Typ: string
- Beschreibung:: Eine Nachricht anzeigen, wenn ein Benutzer dem Kanal beitritt.
Beitrittbar
- Typ: bool
- Beschreibung: Bestimmt, ob ein Benutzer manuell einem Kanal beitreten kann, indem er die /join -Befehls verwendet. Ein Benutzer kann immer noch zu einem Kanal hinzugefügt werden, indem er ChatSpeaker:JoinChannel() oder andere Methoden verwendet, auch wenn diese Eigenschaft falsch ist.
Verlassen
- Typ: bool
- Beschreibung: Bestimmt, ob ein Benutzer einen Kanal manuell verlassen kann, indem er die /leave -Befehls verwendet. Ein Benutzer kann immer noch aus einem Kanal entfernt werden, indem er ChatSpeaker:LeaveChannel() oder andere Methoden verwendet, auch wenn diese Eigenschaft falsch ist.
AutoBeitreten
- Typ: bool
- Beschreibung: Bestimmt, ob sich ein Spieler:inChatSpeaker automatisch dem Kanal anschließt, wenn er dem Spiel beitritt. Nicht-Benutzer-Speaker werden nicht automatisch Kanäle beitreten, auch wenn diese Eigenschaft wahr ist (Sie können ChatSpeaker:JoinChannel() verwenden, um dies zu tun).
Privat
- Typ: bool
- Beschreibung: Bestimmt, ob der Kanal in der Liste der Kanäle zurückgegeben von ChatService:GetChannelList() enthalten sein wird. Dies gilt für WhatsApp-Chats und Team-Chats.
Methoden
Raumsprecher
- Beschreibung: Entfernt den Sprecher mit dem angegebenen speakerName aus dem Kanal, sendet eine Nachricht an den Benutzer und den Kanal, von dem der Benutzer getreten wurde. Wenn ein reason angegeben wird, wird der Grund in der Nachricht enthalten.
- Rückgibt: void
MuteSpeaker
- Parameter: string : speakerName , 0> Library.String0> : 3> reason = null3> , 6> int6> 9> duration = 0 9>
- Beschreibung: Stummt den Sprecher mit dem angegebenen speakerName in dem Kanal für eine bestimmte Dauer. Wenn duration null oder 0 ist, ist die Stummierung unbestimmt. Wenn 0> reason0> angegeben wird, wird eine Nachricht an den Kanal mit dem Grund eingesendet.
- Rückgibt: void
UnmuteSpeaker
- Beschreibung: Läutet den Sprecher mit dem angegebenen speakerName im Kanal.
- Rückgibt: void
istlautsprecher
- Beschreibung: Beschreibt, ob der Sprecher mit dem angegebenen speakerName derzeit im Kanal stumm ist.
- Rückgaben: Boolean
Holen Sie sich die Sprecherliste
- Parameter: Keine
- Beschreibung: gibt eine Liste zurück, die alle Namen der ChatSpeaker im Kanal enthält.
- Rückgibt: Arrays< string >
Systemnachricht senden
- Beschreibung: Sendet eine Nachricht von dem "System" ChatSpeaker an den Kanal.
- Rückgibt: void
RegisterFilterMessageFunction
- Beschreibung: Registriert eine Filterfunktion, func , die von functionId identifiziert wurde, um den Kanal zu verwalten. Die Filterfunktion wird mit dem 0> ChatSpeaker 0> , der 3> ChatMessage3> und dem 6>Library.String 6> : Namen des Kanals, in
- Rückgibt: void
- Beispiel:
-- Fügen Sie dieses Beispiel in ein ModulScript innerhalb der ChatModule-Ordner ein.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Peperoni-Pizza-Scheibe Ausrüstung
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
- Beschreibung: Ein Filterfunktion (registriert von RegisterFilterMessageFunction) mit der ID, functionId .
- Rückgibt: void
RegisterProcessCommandsFunction
- Beschreibung: Registers eine Prozess-Kommand-Funktion, func , identifiziert von functionId für den Chat. Bevor eine Nachricht gefiltert wird, wird sie durch 0> func 0> (und andere Funkt
- Rückgibt: void
- Beispiel:
-- Fügen Sie dieses Beispiel in ein ModulScript innerhalb der ChatModule-Ordner ein.
-- Dieser Filter verwendet ein Schlüsselwort, und wenn er erfolgreich ist, setzt er die ChatColor der Nachricht
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- grün
local function doFilter(speaker, messageObject, channelName)
-- Überprüfen Sie, ob die Nachricht das Schlüsselwort enthält
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Entferne (Filter) das Schlüsselwort aus der Nachricht und stelle auch die ChatColor ein
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Erstellen Sie einen Kanal und registrieren Sie die Filterfunktion
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
UnregisterProcessingCommandsFunction
- Beschreibung:: Ein Register-Processing-Prozessor (Register-Processing-Kommandos (Register-Processing-Funktionen)) wird nicht mehr registriert, wenn der Identifikator gegeben wird, functionId .
- Rückgibt: void
Ereignisse
Nachricht veröffentlicht
- Beschreibung: Feuert eine Nachricht ab, wenn eine Nachricht im Kanal veröffentlicht wird.
Gespeicherter Sprecher
- Beschreibung: Feuert ab, wenn ein ChatSpeaker dem Kanal beitritt.
Lautsprecher links
- Beschreibung: Feuert, wenn ein ChatSpeaker den Kanal verlässt.
LautsprecherStumm
- Beschreibung: Feuert, wenn ein ChatSpeaker in dem Kanal stummgeschaltet wurde.
LautsprecherStummgeschaltet
- Beschreibung: Feuert, wenn ein ChatSpeaker nicht stummgeschaltet ist.