Moduły czatu po stronie serwera

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Możesz użyć następujących modułów czatu, aby wspierać działania stron serwera w systemie czatu Legacy, w tym:

  • Usługa czatu : Singleton, który zarządza wszystkimi innymi modułami czatu.
  • Głośnik czatu : Podmiot, który może tworzyć wiadomości w kanale czatu; każdy Player będzie automatycznie miał głośnik czatu, a boty mogą rozmawiać, tworząc boty czatu.
  • Wiadomość czatu : Pojemnik na treść, którą ChatSpeaker wysyła do ChatChannel; zawiera metadane używane do formatowania wiadomości lub dodania dodatkowej funkcjonalności do poleceń.
  • Kanał czatu : Kanał, przez który ChatSpeakerzy mogą wymieniać wiadomości czatu; używany również do czatu zespołowego i szeptu czatu.

Usługa czatu

ChatService jest jednorazowym obiektem, który obsługuje zachowanie strony serwera systemu czatu Lua, takie jak ChatChannels i ChatSpeakers.

Wszystkie ModuleScript wewnątrz katalogu Moduły czatu powinny zwrócić funkcję, a ta funkcja zostanie wywołana za pomocą jednostki ChatService.

Metody

Dodaj kanał

  • Parametry: string : channelName
  • Opis: Tworzy obiekt ChatChannel z podaną nazwą i go zwraca.
  • Powroty: Kanał czatu

Usuń kanał

  • Parametry: string : channelName
  • Opis: Usuń kanał z daną nazwą
  • Powroty: puste

Zdobądź kanał

  • Parametry: string : channelName
  • Opis: Powraca kanał z podaną nazwą lub nil jeśli nie istnieje.
  • Powroty: Kanał czatu

Dodaj głośnik

  • Parametry: string : speakerName
  • Opis: Twórz i dodaj głośnika do czatu z daną nazwą, a następnie go zwracaj.

Usuń głośnik

  • Parametry: string : speakerName
  • Opis: Usuwa mówcę z czatu z daną nazwą.
  • Powroty: puste

Dostań głośnik

  • Parametry: string : speakerName
  • Opis: Powraca mówca z podaną nazwą lub nil jeśli nie istnieje.

Otrzymaj listę kanałów

  • Parametry: żadne
  • Opis: Zwraca listę nazw wszystkich nieprywatnych kanałów w czacie.
  • Powroty: array< string >

Zdobądź listę kanałów dołączania automatycznego

  • Parametry: żadne
  • Opis: Zwraca listę nazw wszystkich kanałów w czacie z ustawieniem AutoJoin na prawdę.
  • Powroty: array< string >

Funkcja rejestrująca filtr wiadomości

  • Parametry: string : functionId , funkcja : func
  • Opis: Rejestruje funkcję filtra do czatu oznaczony przez functionId .Wszelkie zmiany w wiadomości utrzymają się i zostaną wyświetlone, gdy wiadomość przejdzie przez wszystkie inne funkcje filtrowania.Funkcja ta otrzymuje nazwę głośnik, obiekt wiadomości i kanał, z którego pochodzi wiadomość.
  • Powroty: puste
  • Przykład:

-- Wklej ten przykład do ModulesScript w folderze ChatModule.
-- Ten przykład filtruje słowo kluczowe, a jeśli zakończy się sukcesem, ustawia kolor czatu wiadomość
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- zielony
local function doFilter(speaker, messageObject, channelName)
-- Sprawdź, czy wiadomość zawiera słowo kluczowe
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Usuń (filtruj) słowo kluczowe z wiadomość, ustawiając również 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

Funkcja Niezarejestrowany filtr wiadomości

  • Parametry: string : functionId
  • Opis: Rejestruje funkcję filtra (zarejestrowaną przez RegisterFilterMessageFunction) podany jej identyfikator, functionId .
  • Powroty: puste

Funkcja komend rejestracyjnych procesu

  • Parametry: string : functionId , funkcja : func
  • Opis: Rejestruje funkcję polecenia procesu do czatu zidentyfikowanego przez functionId .Zanim wiadomość zostanie przefiltrowana, przejdzie przez func (i inne funkcje zarejestrowane przez tę)Funkcja func powinna sprawdzić, czy wiadomość wzywa polecenie.Jeśli tak, wykonaj akcję polecenia i zwróć prawdę.Powrót prawdy wskazuje, że wiadomość rzeczywiście była poleceniem i nie powinna być wyświetlana.Funkcję można odinstalować za pomocą funkcji UnregisterProcessCommandsFunction.
  • Powroty: puste
  • Przykład:

-- Wklej ten przykład do ModulesScript w folderze ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Sprzęt do kawałka pizzy pepperoni
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

Funkcja poleceń niezarejestrowania procesu

Wydarzenia

Dodano kanał

  • Parametry: string : channelName
  • Opis: Ogień, gdy kanał zostanie dodany do czatu.

Kanał usunięty

  • Parametry: string : channelName
  • Opis: Ogień, gdy kanał zostanie usunięty z czatu.

Dodano mówcę

  • Parametry: string : speakerName
  • Opis: Ogień, gdy dodano mówcę do czatu.

Głośnik usunięty

  • Parametry: string : speakerName
  • Opis: Ogień, gdy głośnik zostanie usunięty z czatu.

Głośnik czatu

A ChatSpeaker to reprezentacja jednej jednostki, która może mówić w ChatChannel.Każdy Player połączony z grą automatycznie ma powiązany ChatSpeaker.Dodatkowe głośniki czatu mogą być zbudowane dla nieużytkowników (takich jak ogłoszenia lub wiadomości wskazówek) za pomocą ChatService:AddSpeaker().

Właściwości

Nazwa

  • Typ: string : Name
  • Opis: Nazwa głośnik, używana do odwoływania się do tego mówcy podczas wzywania wielu innych funkcji.

Metody

Dołącz kanał

  • Parametry: string : channelName
  • Opis: Dodaje mówcę do kanału z podanym channelName
  • Powroty: puste

Opuść kanał

  • Parametry: string : channelName
  • Opis: Usuwa mówcę z kanału za pomocą podanego channelName
  • Powroty: puste

Otrzymaj listę kanałów

  • Parametry: Żadne
  • Opis: Zwraca listę nazw wszystkich kanałów, w których mówca jest.
  • Powroty: array< string >

Jest w kanałach

  • Parametry: string : channelName
  • Opis: Powraca, czy głośnik jest na kanale z podanym channelName .
  • Powroty: bool

Powiedz wiadomość

Wyślij wiadomość

  • Parametry: : , : , : , :
  • Opis: Wysyła wiadomość do ChatSpeaker z podaną nazwą fromSpeaker.Jeśli nie ma takiego głośnika w kanał, metoda ta tworzy ostrzeżenie, a głośnik nie zobaczy wiadomości.
  • Powroty: puste

Wyślij wiadomość systemową

  • Parametry: string : message , string : channelName
  • Opis: Wysyła wiadomość systemową do ChatChannel z podanym channelName .Jeśli głośnik nie jest na kanał, wiadomość ta stworzy ostrzeżenie, a inni głośnicy w kanale nie zobaczą wiadomości.
  • Powroty: puste

Zdobądź gracza

  • Parametry: Żadne
  • Opis: Powraca obiekt Player związany z głośnik.Jeśli mówca nie jest dla użytkownika (bota), to zwraca to nil .
  • Powroty: Player lub nil

Ustaw dodatkowe dane

  • Parametry: string : key , Wariant data
  • Opis: Ustawia niektóre dodatkowe dane dla mówcy pod określonym key .Zawsze gdy głośnik wysyła wiadomość czatu, te dodatkowe dane są dołączone do wiadomości, jeśli żadna nie jest wyraźnie dostarczana z wiadomością.Na przykład umożliwia ustawienie koloru czatu mówcy.
  • Powroty: puste

Zdobądź dodatkowe dane

  • Parametry: string : key
  • Opis: Powraca dodatkowe dane związane z danym key , ustawione za pomocą SetExtraData.
  • Powroty: Variant

Ustaw kanał główny

  • Parametry: string : channelName
  • Opis: Ustawia mówcę, aby mówił w podanym kanale. Wysyła Ustawienie kanału głównego.
  • Powroty: nil

Wydarzenia

Powiedz wiadomość

Otrzymano wiadomość

Otrzymano wiadomość systemową

  • Parametry: Wiadomość czatumessage , string : channelName
  • Opis: Strzelany, gdy mówca otrzymuje system wiadomość czatu z kanału czatu z danym .

Dołączono do kanału

  • Parametry: string : channelName , string : channelWelcomeMessage
  • Opis: Strzelany, gdy głośnik dołącza do ChatChannel z podanym channelName.

KanałLewo

  • Parametry: string : channelName
  • Opis: Strzelany, gdy głośnik opuści Kanał czatu z danym channelName.

Wyciszony

  • Parametry: string : channelName , string : reason = nil , int : duration = 0
  • Opis: Strzelany, gdy mikrofon jest wyciszony na kanale Chat z podanym channelName na określony czas (jeśli dostarczono).Może lub nie może być dostarczony reason .

Odciszony

  • Parametry: string : channelName
  • Opis: Strzelany, gdy głośnik jest wyciszony na kanale czatu ChatChannel z danym channelName.

Dodatkowe dane zaktualizowane

  • Parametry: string : key , Wariant data
  • Opis: Strzelany, gdy domyślna wartość klucza w dodatkowych danych głośnikzostanie zaktualizowana za pomocą SetExtraData.

Główny kanał ustawień

  • Parametry: string : channelName
  • Opis: Strzelany, gdy kanał główny głośników zostanie zmieniony na ChatChannel z danym channelName.

Wiadomość czatu

Wiadomość ChatMessage to struktura danych reprezentująca wiadomość wysłaną z ChatSpeaker.Zawiera dane o wiadomości, w tym długość tekstu, czy tekst został przefiltrowany przez Roblox, oraz dodatkowe dane o wyglądzie wiadomości.

Właściwości

ID

  • Typ: int
  • Opis: Unikalny numerowy identyfikator wiadomość.

OdGłośnika

Kanał oryginalny

Jest filtrowany

  • Typ: bool
  • Opis: Opisuje, czy wiadomość jest filtrowana przez Roblox (jeśli prawda, wiadomość będzie nil )

Długość wiadomości

  • Typ: int
  • Opis: Długość wiadomości. Możesz użyć tego, aby wygenerować skróconą strunę, jeśli wiadomość została przefiltrowana.

Wiadomość

  • Typ: string : lub nil
  • Opis: Tekst wiadomość. Ta właściwość będzie nil jeśli IsFiltered jest prawdą.

Typ wiadomości

  • Typ: string :
  • Opis: Typ wiadomość. Te typy są opisane w module ChatConstants:
  • Możliwe wartości: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"

Czas

  • Typ: int
  • Opis: Timestamp; wartość os.time() w momencie dziełowiadomość.

Dodatkowe dane

  • Typ: słownik< string , Variant>
  • Opis: Słownik metadanych dla tej wiadomość.Służy do zmiany wyglądu wiadomość.Poniższe klucze mogą być obecne:

Kanał czatu

Kanał czatu jest obiektem, który przechowuje dane o pojedynczym kanale, który jest sposobem wymiany wiadomości między Głośnikami czatu.Posiada również właściwości uprawnień dostępu, które określają widoczność wiadomości wraz z tym, czy użytkownicy mogą dołączyć lub opuścić kanał ręcznie (za pomocą poleceń /join lub /leave).

Domyślnie każdy użytkownik ma ChatSpeaker, który jest automatycznie dodawany do kanałów czatu "Wszystko" i "System" (choć "System" jest tylko odczytywany).Jeśli użytkownik jest na Player.Team, będzie miał również dostęp do kanału tylko dla tej Drużyny.

Właściwości

Nazwa

  • Typ: string
  • Opis: Nazwa kanału, używana do odniesienia się do kanału w innych funkcjach.

Wiadomość powitalna

  • Typ: string
  • Opis: Wiadomość do wyświetlenia, gdy użytkownik dołącza do kanału.

Dołączalny

  • Typ: bool
  • Opis: Określa, czy użytkownik może ręcznie dołączyć do kanału za pomocą polecenia /join.Użytkownik nadal może zostać dodany do kanału za pomocą ChatSpeaker:JoinChannel() lub innych środków, nawet jeśli ta właściwość jest fałszywa.

Możliwe do opuszczenia

  • Typ: bool
  • Opis: Określa, czy użytkownik może ręcznie opuścić kanał za pomocą polecenia /leave.Użytkownik nadal może być usunięty z kanału za pomocą ChatSpeaker:LeaveChannel() lub innych środków, nawet jeśli ta właściwość jest fałszywa.

Automatyczne dołączanie

  • Typ: bool
  • Opis: Określa, czy gracz ChatSpeaker dołączy automatycznie do kanału po dołączeniu do gry.Głośnicy nieużywający nie będą automatycznie dołączać do kanałów, nawet gdy ta właściwość jest prawdą (możesz użyć ChatSpeaker:JoinChannel(), aby to zrobić).

Prywatny

  • Typ: bool
  • Opis: Określa, czy kanał zostanie włączony do listy kanałów zwrotnych przez ChatService:GetChannelList().To dotyczy czatów szeptanych i czatów zespołowych.

Metody

Głośnik kopnięcia

  • Parametry: string : speakerName , string : reason = nil
  • Opis: Usuwa głośnik z danym speakerName z kanału, wysyłając wiadomość zarówno do użytkownika, jak i kanału, z którego użytkownik został wyrzucony.Jeśli zostanie podany reason, powód zostanie uwzględniony w wiadomości.
  • Powroty: puste

Wycisz głośnik

  • Parametry: string : speakerName , string : reason = nil , intduration = 0
  • Opis: Zamyka mikrofon z danym speakerName na określony czas w sekundach.Jeśli duration jest nil lub 0, cisza jest nieskończona.Jeśli reason zostanie podane, wysłana zostanie wiadomość na kanał z powodem włączonym.
  • Powroty: puste

Odcisz mikrofon

  • Parametry: string : speakerName
  • Opis: Odłącza mikrofon z danym speakerName w kanał.
  • Powroty: puste

Czy mikrofon jest wyciszony

  • Parametry: string : speakerName
  • Opis: Opisuje, czy głośnik z danym speakerName jest obecnie wyciszony w kanał.
  • Powroty: bool

Zdobądź listę mówców

  • Parametry: Żadne
  • Opis: Zwraca listę zawierającą wszystkie, jeśli nazwy Głośnik czatu znajdują się obecnie w kanał.
  • Powroty: array< string >

Wyślij wiadomość systemową

  • Parametry: string : message
  • Opis: Wysyła wiadomość z "Systemu" ChatSpeaker do kanału.
  • Powroty: puste

Funkcja rejestrująca filtr wiadomości

  • Parametry: string : functionId , funkcjafunc
  • Opis: Rejestruje funkcję filtra, func , oznaczoną przez functionId do kanału.Funkcja filtrowania zostanie wywołana za pomocą ChatSpeaker, ChatMessage i string nazwy kanału, z którego pochodzi wiadomość.Zmiany w wiadomości utrzymają się i zostaną wyświetlone po przefiltrowaniu.
  • Powroty: puste
  • Przykład:

-- Wklej ten przykład do ModulesScript w folderze ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Sprzęt do kawałka pizzy pepperoni
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

Funkcja Niezarejestrowany filtr wiadomości

  • Parametry: string : functionId
  • Opis: Rejestruje funkcję filtra (zarejestrowaną przez RegisterFilterMessageFunction) podany jej identyfikator, functionId .
  • Powroty: puste

Funkcja komend rejestracyjnych procesu

  • Parametry: string : functionId , funkcjafunc
  • Opis: Rejestruje funkcję polecenia procesu, func , oznaczoną przez functionId do czatu.Zanim wiadomość zostanie przefiltrowana, przejdzie przez func (i inne funkcje zarejestrowane przez tę)Funkcja func powinna sprawdzić, czy wiadomość wzywa polecenie.Jeśli tak, wykonaj akcję polecenia i zwróć prawdę.Powrót prawdy wskazuje, że wiadomość rzeczywiście była poleceniem i nie powinna być wyświetlana.Funkcję można odinstalować za pomocą funkcji UnregisterProcessCommandsFunction.
  • Powroty: puste
  • Przykład:

-- Wklej ten przykład do ModulesScript w folderze ChatModule.
-- Ten przykład filtruje słowo kluczowe, a jeśli zakończy się sukcesem, ustawia kolor czatu wiadomość
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- zielony
local function doFilter(speaker, messageObject, channelName)
-- Sprawdź, czy wiadomość zawiera słowo kluczowe
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Usuń (filtruj) słowo kluczowe z wiadomość, ustawiając również ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Utwórz kanał i zarejestruj funkcję filtrowania
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Funkcja poleceń niezarejestrowania procesu

  • Parametry: string : functionId
  • Opis: Rejestruje procesor komend (zarejestrowany przez funkcję RegisterProcessCommands) podany identyfikator, functionId .
  • Powroty: puste

Wydarzenia

Wiadomość opublikowana

  • Parametry: Wiadomość czatu : message
  • Opis: Ogień, gdy wiadomość zostanie opublikowana w kanał.

Głośnik dołączony

  • Parametry: string : speakerName
  • Opis: Ogień, gdy ChatSpeaker dołączy do kanału.

GłośnikLeft

Głośnik wyciszony

Głośnik wyciszony

Na tej stronie