Server-seitige Chat-Module

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Du kannst 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 : Eine Entität, die Nachrichten in einem Chat-Kanal erstellen kann; jeder Player wird automatisch einen ChatSpeaker haben, und Bots können chatten, indem sie ChatSpeaker erstellen.
  • Chatnachricht : Ein Container für Inhalte, die ein Chatsprecher an einen Chatkanal sendet; enthält Metadaten, die zur Formatierung der Nachricht oder zum Hinzufügen zusätzlicher Funktionen zu Befehlen verwendet werden.
  • ChatChannel : Ein Kanal, über den ChatSpeaker Chatnachrichten austauschen können; wird auch für Team-Chat und Whisper-Chat verwendet.

ChattenService

ChatService ist ein Singleton-Objekt, das das serverseitige Verhalten des Lua-Chat-Systems wie ChatChannels und ChatSpeaker handhabt.

Alle ModuleScript innerhalb des ChatModule Ordners sollten eine Funktion zurückgeben, und diese Funktion wird mit dem ChatService-Singleton aufgerufen.

Methoden

Kanal hinzufügen

  • Parameter: string : channelName
  • Beschreibung: Erstellt ein ChatChannel-Objekt mit dem angegebenen Namen und gibt es zurück.
  • Rückgaben: ChatChannel

Kanal entfernen

  • Parameter: string : channelName
  • Beschreibung: Entferne einen Kanal mit dem angegebenen Namen
  • Rückgaben: void

Channel erhalten

  • Parameter: string : channelName
  • Beschreibung: Gibt den Kanal mit dem angegebenen Namen zurück, oder nil wenn er nicht existiert.
  • Rückgaben: ChatChannel

Speaker hinzufügen

  • Parameter: string : speakerName
  • Beschreibung: Erstelle und füge einen Redner zum Chat mit dem angegebenen Namen hinzu, dann sende ihn zurück.
  • Rückgaben: ChatSpeaker

Lautsprecher entfernen

  • Parameter: string : speakerName
  • Beschreibung: Entfernt den Sprecher aus dem Chat mit dem angegebenen Namen.
  • Rückgaben: void

Holen Sie sich Speaker

  • Parameter: string : speakerName
  • Beschreibung: Gibt den Sprecher mit dem angegebenen Namen zurück, oder nil 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ückgaben: Array< string >

GetAutoJoinChannelList

  • Parameter: keine
  • Beschreibung: Gibt eine Liste der Namen aller Kanäle im Chat mit AutoJoin auf wahr zurück.
  • Rückgaben: Array< string >

Registerfilternachrichtenfunktion

  • Parameter: string : functionId , Funktion : func
  • Beschreibung: Registriert eine Filterfunktion für den Chat, die durch functionId identifiziert wurde.Alle Änderungen an der Nachricht bleiben bestehen und werden angezeigt, wenn die Nachricht durch alle anderen Filterfunktionen geht.Diese Funktion erhält den Namen des Lautsprecher, das Objektund den Kanal, aus dem die Nachricht stammt.
  • Rückgaben: void
  • Beispiel:

-- Füge dieses Beispiel in ein Modulskript innerhalb des ChatModule-Ordners ein.
-- Dieses Beispiel filtert ein Schlüsselwort und, wenn es erfolgreich ist, setzt es die Chatfarbe der Nachricht
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- grün
local function doFilter(speaker, messageObject, channelName)
-- Überprüfe, 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 lege auch die ChatColor fest
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Unregistrierte Filternachrichtenfunktion

  • Parameter: string : functionId
  • Beschreibung: Registriert eine Filterfunktion (registriert durch RegisterFilterMessageFunction) mit ihrem Identifikator, functionId .
  • Rückgaben: void

Registerprozess-Commands-Funktion

  • Parameter: string : functionId , Funktion : func
  • Beschreibung: Registriert eine Prozessbefehlsfunktion für den Chat, der durch functionId.Bevor eine Nachricht gefiltert wird, wird sie durch func (und andere von dieser Funktion registrierte Funktionen) gehen.Die Funktion func sollte überprüfen, ob die Nachricht einen Befehl aufruft.Wenn ja, führen Sie die Aktion des Befehls aus und geben Sie true zurück.Die Rückgabe von true zeigt an, dass die Nachricht tatsächlich ein Befehl war und nicht angezeigt werden sollte.Die Funktion kann mit UnregisterProcessCommandsFunction deaktiviert werden.
  • Rückgaben: void
  • Beispiel:

-- Füge dieses Beispiel in ein Modulskript innerhalb des ChatModule-Ordners ein.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- 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

Unregistrierungsprozess-Commands-Funktion

  • Parameter: string : functionId
  • Beschreibung: Entfernt einen Befehl-Prozessor (registriert durch RegisterProcessCommandsFunction ) angesichts der Identifikator, functionId .
  • Rückgaben: void

Ereignisse

Kanal hinzugefügt

  • Parameter: string : channelName
  • Beschreibung: Feuert, wenn ein Kanal zum Chat hinzugefügt wird.

Kanal entfernt

  • Parameter: string : channelName
  • Beschreibung: Feuert, wenn ein Kanal aus dem Chat entfernt wird.

SpeakerHinzugefügt

  • Parameter: string : speakerName
  • Beschreibung: Feuert, wenn ein Lautsprecher zum Chat hinzugefügt wird.

Lautsprecher entfernt

  • Parameter: string : speakerName
  • Beschreibung: Feuert, wenn ein Lautsprecher aus dem Chat entfernt wird.

Chat-Lautspieler

Ein ChatSpeaker ist die Darstellung einer Entität, die in einem ChatChannel sprechen kann.Jedes Player verbunden mit dem Spiel wird automatisch einen verbundenen ChatSpeaker haben.Zusätzliche ChatSpeaker können für Nicht-Benutzer (z. B. Ankündiger oder Hinweismeldungen) erstellt werden, indem ChatService:AddSpeaker() verwendet wird.

Eigenschaften

Namen

  • Typ: string : Name
  • Beschreibung: Der Name des Lautsprecher, der verwendet wird, um diesen Redner zu referenzieren, während viele andere Funktionen aufgerufen werden.

Methoden

Kanal beitreten

  • Parameter: string : channelName
  • Beschreibung: Fügt den Lautsprecher zum Kanal mit dem angegebenen channelName hinzu
  • Rückgaben: void

Kanal verlassen

  • Parameter: string : channelName
  • Beschreibung: Entfernt den Lautsprecher aus dem Kanal mit dem angegebenen channelName
  • Rückgaben: void

Channel-Liste erhalten

  • Parameter: Keine
  • Beschreibung: Gibt eine Liste der Namen aller Kanäle zurück, in denen der Sprecher ist.
  • Rückgaben: Array< string >

Ist im Kanal

  • Parameter: string : channelName
  • Beschreibung: Gibt zurück, ob der Sprecher im Kanal mit dem angegebenen channelName ist.
  • Rückgaben: bool

SagNachricht

  • Parameter: string : message , dictionary< string : channelName , Variante> string , Variant> extraData
  • Beschreibung: Verursacht, dass der Lautsprecher sagt message und die erstellte ChatMessage-Objekt zurückgibt, indem er das tut.
  • Rückgaben: Chatnachricht

Nachricht senden

  • Parameter: : , : , : , :
  • Beschreibung: Sendet eine Nachricht an den ChatSpeaker mit dem angegebenen fromSpeaker.Wenn kein solcher Lautsprecher im Kanal ist, erstellt diese Methode eine Warnung, und der Lautsprecher wird die Nachricht nicht sehen.
  • Rückgaben: void

SendSystemMessage

  • Parameter: string : message , string : channelName
  • Beschreibung: Sendet eine Systemnachricht an den ChatChannel mit dem angegebenen channelName.Wenn der Lautsprecher nicht im Kanal ist, erstellt diese Nachricht eine Warnung und andere Lautsprecher im Kanal sehen die Nachricht nicht.
  • Rückgaben: void

Spieler holen

  • Parameter: Keine
  • Beschreibung: Gibt das Player Objekt zurück, das mit dem Sprecher verbunden ist.Wenn der Lautsprecher nicht für einen Benutzer (einen Bot) ist, gibt dies nil zurück.
  • Rückgaben: Player oder nil

Zusätzliche Daten setzen

  • Parameter: string : key , Variante data
  • Beschreibung: Legt einige zusätzliche Daten für den Lautsprecher unter einem bestimmten key fest.Jedes Mal, wenn der Sprecher eine Chatnachricht sendet, wird dieser zusätzliche Daten an die Nachricht angehängt, wenn keiner explizit mit der Nachricht bereitgestellt wird.Zum Beispiel kann dadurch die Chat-Farbe des Redners festlegenwerden.
  • Rückgaben: void

Erhalte zusätzliche Daten

  • Parameter: string : key
  • Beschreibung: Gibt die zusätzlichen Daten zurück, die mit dem angegebenen key verbunden sind, und setzt sie mit SetExtraData fest.
  • Rückgaben: Variante

MainChannel einstellen

  • Parameter: string : channelName
  • Beschreibung: Legt den Lautsprecher so ein, dass er im bereitgestellten Kanal spricht. Feuert MainChannelSet ab.
  • Rückgaben: nil

Ereignisse

Sagte Nachricht

Erhaltene Nachricht

Erhaltene Systemnachricht

ChannelBeigetreten

  • Parameter: string : channelName , string : channelWelcomeMessage
  • Beschreibung: Feuert ab, wenn der Sprecher sich dem ChatChannel mit dem angegebenen channelName anschließt.
  • Parameter: string : channelName
  • Beschreibung: Feuert ab, wenn der Sprecher einen ChatChannel mit dem angegebenen channelName verlässt.

Stummgeschaltet

  • Parameter: string : channelName , string : reason = nil , int : duration = 0
  • Beschreibung: Feuert ab, wenn der Lautsprecher auf dem ChatChannel mit dem angegebenen channelName für die angegebene Dauer stummgeschaltet wird (wenn bereitgestellt).Es kann oder es kann nicht ein reason bereitgestellt werden.

Entstummt

  • Parameter: string : channelName
  • Beschreibung: Feuert ab, wenn der Lautsprecher auf dem ChatChannel mit dem angegebenen channelName deaktiviert wird.

Zusätzliche Daten aktualisiert

  • Parameter: string : key , Variante data
  • Beschreibung: Feuert ab, wenn der Standardwert eines Schlüssels in den zusätzlichen Daten des Lautsprechers mit SetExtraData aktualisiert wird.

Hauptkanal-Set

  • Parameter: string : channelName
  • Beschreibung: Feuert ab, wenn der Hauptkanal der Lautsprecher auf den ChatChannel mit dem angegebenen gewechselt wird.

Chatnachricht

Eine Chatnachricht ist eine Datenstruktur, die eine Nachricht darstellt, die von einem Chat-Lautsprecher gesendet wurde.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 eindeutiger numerischer Identifikator für die Nachricht.

VonSpeaker

Originalkanal

  • Typ: string :
  • Beschreibung: Der Name des ChatChannel, von dem die Nachricht stammt.

Filtriert

  • Typ: bool
  • Beschreibung: Beschreibt, ob die Nachricht von Roblox gefiltert wird (wenn ja, wird die Nachricht nil )

Nachrichtenlänge

  • Typ: int
  • Beschreibung: Die Länge der Nachricht. Du kannst dies verwenden, um einen verschlüsselten String zu generieren, wenn die Nachricht gefiltert wurde.

Nachricht

  • Typ: string : oder nil
  • Beschreibung: Der Text der Nachricht. Diese Eigenschaft wird nil sein, wenn IsFiltered wahr ist.

Nachrichtentyp

  • Typ: string :
  • Beschreibung: Der Typ der Nachricht. Diese Arten werden im ChatConstants-Modul beschrieben:
  • Mögliche Werte: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"

Zeit

  • Typ: int
  • Beschreibung: Ein Zeitstempel; der Wert von os.time() zu der Zeit der Schöpfungder Nachricht.

ExtraDaten

  • Typ: Diktionär< string , Variante>
  • Beschreibung: Ein Wörterbuch von Metadaten für diese Nachricht.Dies wird verwendet, um das Aussehen der Nachricht zu ändern.Die folgenden Schlüssel können vorhanden sein:

ChatChannel

ChatChannel ist ein Objekt, das Daten über einen einzelnen Kanal speichert, der ein Mittel ist, mit dem Nachrichten zwischen ChatSpeakern ausgetauscht werden können.Es hat auch Zugriffsberechtigungs属性, die die Sichtbarkeit von Nachrichten bestimmen, zusammen mit der Frage, ob Benutzer den Kanal manuell beitreten oder verlassen können (mit /join oder /leave Befehlen).

Standardmäßig hat jeder Benutzer einen Chat-Lautsprecher, der automatisch zu den Chat-Kanälen "Alle" und "System" hinzugefügt wird (obwohl "System" nur lesbar ist).Wenn der Benutzer auf einer Player.Team ist, hat er auch Zugriff auf einen Kanal nur für dieses Team.

Eigenschaften

Namen

  • Typ: string
  • Beschreibung: Der Name des Kanals, der verwendet wird, um den Kanal in anderen Funktionen zu referenzieren.

Willkommensnachricht

  • Typ: string
  • Beschreibung: Eine Nachricht, die angezeigt wird, wenn ein Benutzer dem Kanal beitritt.

Beitrittsmöglich

  • Typ: bool
  • Beschreibung: Legt fest, ob ein Benutzer einen Kanal manuell mit dem /join beitreten kann.Ein Benutzer kann immer noch zu einem Kanal hinzugefügt werden, indem ChatSpeaker:JoinChannel() oder andere Mittel verwendet werden, auch wenn diese Eigenschaft falsch ist.

Verlassbar

  • Typ: bool
  • Beschreibung: Legt fest, ob ein Benutzer einen Kanal manuell verlassen kann, indem er die /leave Befehl verwendet.Ein Benutzer kann immer noch aus einem Kanal mit ChatSpeaker:LeaveChannel() oder anderen Mitteln entfernt werden, auch wenn diese Eigenschaft falsch ist.

Automatisches Beitreten

  • Typ: bool
  • Beschreibung: Legt fest, ob der ChatSpeaker eines Spieler:inautomatisch dem Kanal beitritt, wenn er dem Spiel beitritt.Nicht-Benutzer-Lautsprecher 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: Legt fest, ob der Kanal in die Liste der Kanäle aufgenommen wird, die durch ChatService:GetChannelList() zurückgegeben werden.Dies für Whisper-Chats und Team-Chats.

Methoden

Rausschmeißer

  • Parameter: string : speakerName , string : reason = nil
  • Beschreibung: Entfernt den Lautsprecher mit der angegebenen speakerName vom Kanal, sendet eine Nachricht an den Benutzer und den Kanal, von dem der Benutzer gekickt wurde.Wenn ein reason bereitgestellt wird, wird der Grund in der Nachricht enthalten sein.
  • Rückgaben: void

Stummspeaker

  • Parameter: string : speakerName , string : reason = nil , intduration = 0
  • Beschreibung: Stummt den Lautsprecher mit dem angegebenen speakerName im Kanal für eine in Sekunden angegebene Dauer.Wenn duration ist nil oder 0, ist die Stille unbestimmt.Wenn reason bereitgestellt wird, wird eine Nachricht an den Kanal mit dem Grund gesendet.
  • Rückgaben: void

Lautsprecher stummschalten

  • Parameter: string : speakerName
  • Beschreibung: Stummt den Lautsprecher mit dem angegebenen speakerName im Kanal aus.
  • Rückgaben: void

IstSpeakerMutet

  • Parameter: string : speakerName
  • Beschreibung: Beschreibt, ob der Lautsprecher mit der angegebenen speakerName derzeit im Kanal stummgeschaltet ist.
  • Rückgaben: bool

GetSpeakerliste

  • Parameter: Keine
  • Beschreibung: Gibt eine Liste zurück, die alle Namen der ChatSpeaker enthält, die derzeit im Kanal sind.
  • Rückgaben: Array< string >

SendSystemMessage

  • Parameter: string : message
  • Beschreibung: Sendet eine Nachricht vom "System" ChatSpeaker an den Kanal.
  • Rückgaben: void

Registerfilternachrichtenfunktion

  • Parameter: string : functionId , Funktionfunc
  • Beschreibung: Registriert eine Filterfunktion, func , die durch functionId identifiziert wurde, an den Kanal.Die Filterfunktion wird mit der ChatSpeaker, der ChatMessage und der string: Name des Kanals aufgerufen, aus dem die Nachricht stammt.Änderungen an der Nachricht bleiben bestehen und werden nach der Filterung angezeigt.
  • Rückgaben: void
  • Beispiel:

-- Füge dieses Beispiel in ein Modulskript innerhalb des ChatModule-Ordners ein.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- 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

Unregistrierte Filternachrichtenfunktion

  • Parameter: string : functionId
  • Beschreibung: Registriert eine Filterfunktion (registriert durch RegisterFilterMessageFunction) mit ihrem Identifikator, functionId .
  • Rückgaben: void

Registerprozess-Commands-Funktion

  • Parameter: string : functionId , Funktionfunc
  • Beschreibung: Registriert eine Prozessbefehlsfunktion, , die von identifiziert wurde, um sie im Chat anzubieten.Bevor eine Nachricht gefiltert wird, wird sie durch func (und andere von dieser Funktion registrierte Funktionen) gehen.Die Funktion func sollte überprüfen, ob die Nachricht einen Befehl aufruft.Wenn ja, führen Sie die Aktion des Befehls aus und geben Sie true zurück.Die Rückgabe von true zeigt an, dass die Nachricht tatsächlich ein Befehl war und nicht angezeigt werden sollte.Die Funktion kann mit UnregisterProcessCommandsFunction deaktiviert werden.
  • Rückgaben: void
  • Beispiel:

-- Füge dieses Beispiel in ein Modulskript innerhalb des ChatModule-Ordners ein.
-- Dieses Beispiel filtert ein Schlüsselwort und, wenn es erfolgreich ist, setzt es die Chatfarbe der Nachricht
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- grün
local function doFilter(speaker, messageObject, channelName)
-- Überprüfe, 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 lege auch die ChatColor fest
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Erstelle einen Kanal und registriere die Filterfunktion
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Unregistrierungsprozess-Commands-Funktion

  • Parameter: string : functionId
  • Beschreibung: Entfernt einen Befehl-Prozessor (registriert durch RegisterProcessCommandsFunction) angesichts der Identifikator, functionId .
  • Rückgaben: void

Ereignisse

Nachricht veröffentlicht

  • Parameter: ChatMessage : message
  • Beschreibung: Feuert, wenn eine Nachricht im Kanal veröffentlicht wird.

LautsprecherBeigetreten

  • Parameter: string : speakerName
  • Beschreibung: Feuert, wenn ein ChatSpeaker dem Kanal beitritt.

LautsprecherLeft

  • Parameter: string : speakerName
  • Beschreibung: Feuert, wenn ein ChatSpeaker den Kanal verlässt.

Lautsprecher stummgeschaltet

  • Parameter: string : speakerName , string : reason , intduration = 0
  • Beschreibung: Feuert ab, wenn ein ChatSpeaker im Kanal stummgeschaltet wurde.

Lautsprecher deaktiviert

  • Parameter: string : speakerName
  • Beschreibung: Feuert, wenn ein ChatSpeaker stummgeschaltet wird.