伺服器端聊天模組

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

您可以使用以下聊天模組來支援 Legacy Chat System 的伺服器端行為,包括:

  • ChatService : 單一模塊管理所有其他聊天模塊。
  • 聊天對話器 : 可以在聊天頻道中創建訊息的對象;每個 Player 將會自動有一個聊天對話器,並且機器人可以通過創建聊天對話器來聊天。
  • 聊天訊息 : 容器對話框內容的聊天講師發送到聊天頻道;包含用於格式化訊息或添加額外功能的指令。
  • 聊天頻道 : 一個用於聊天講師交換聊天訊息的頻道;也用於團隊聊天和靜音聊天。

聊天服務

ChatService 是一個單一的對象,負責 Lua 聊天系統的伺服器端行為,例如 ChatChannelsChatSpeakers

所有 ModuleScript 內的 s 都在 ChatModule 文件夾內,該文件夾會檢查出一個函數,並且該函數會用於 ChatService 的 singleton。

方法

添加通道

  • 參數: string : channelName
  • 說明: 建立 ChatChannel 對象,並將其返回。
  • 返回: 聊天頻道

移除通道

  • 參數: string : channelName
  • 說明: 移除指定名稱的頻道
  • 返回: 無效

取得頻道

  • 參數: string : channelName
  • 說明: 以指定的名稱返回頻道,或為不存在的情況下為零。
  • 返回: 聊天頻道

增加喇叭

  • 參數: string : speakerName
  • 說明: 創建並添加一名發言人到聊天,然後將其返回。
  • 返回: 聊天對話器

移除喇叭

  • 參數: string : speakerName
  • 說明: 移除發言人從聊天中使用指定名稱。
  • 返回: 無效

取得喇叭

  • 參數: string : speakerName
  • 說明: 返回發言人,或為它設定的名稱,或為它所不存在的零。
  • 返回: 聊天對話器

取得ChannelList

  • 參數:
  • 說明: 返回聊天室中所有非私人頻道的名稱。
  • 返回: array< string >

取得自動加入頻道列表

  • 參數:
  • 說明: 返回聊天中設定為 true 的所有頻道的名稱列表。
  • 返回: array< string >

註冊過濾器訊息功能

  • 參數: string : functionId , 0> 函數0> : 3> func 3>
  • 說明: 註冊一個過濾器功能到聊天由 functionId 識別。 任何對訊息的變更都會持續顯示,當訊息通過所有其他過濾器功能。 此功能是傳給講師的名稱、訊息對物件和傳輸通道。
  • 返回: 無效
  • 範例:

-- 將此範例放入 ChatModule 的模組內。
-- 這個範例過濾關鍵字,並且如果成功,設定訊息的聊天顏色
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- 綠色
local function doFilter(speaker, messageObject, channelName)
-- 檢查是否包含關鍵字
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- 從訊息中移除(過篩選器)關鍵字,並且設定聊天顏色
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

取消註冊過濾器訊息功能

  • 參數: string : functionId
  • 說明: 取消註冊過濾器功能(RegisterFilterMessageFunction)的指定器,functionId
  • 返回: 無效

註冊程序命令函數

  • 參數: string : functionId , 0> 函數0> : 3> func 3>
  • 說明: 註冊聊天對話指定的聊天程序指定的程序指令功能。 在訊息被過濾之前,它會通過 functionId (和此處註冊的其他功能)。 功能 func 應��
  • 返回: 無效
  • 範例:

-- 將此範例放入 ChatModule 的模組內。
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- 義式臘腸披薩裝備
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

  • 參數: string : functionId
  • 說明: 不註冊指定的指令處理器 (RegisterProcessCommandsFunction 由 RegisterProcess 註冊) ,因此具有 functionId
  • 返回: 無效

事件

已新增的頻道

  • 參數: string : channelName
  • 說明: 在聊天室添加頻道時發射。

已移除頻道

  • 參數: string : channelName
  • 說明: 會在頻道被從聊天室移除時發射。

已添加喇叭

  • 參數: string : speakerName
  • 說明: 在有人添加講師到聊天時會發射。

已移除喇叭

  • 參數: string : speakerName
  • 說明: 發射器當發言者被從聊天中移除時。

聊天對話器

聊天講師 是表示一個可以在 聊天頻道 中發言的實體。每個 Player 連接到遊戲時會自動有一個聊天講師。 額外的聊天講師可以由非用戶建造 (例如公佈人或提示訊息) 使用 1>聊天服務:添加講師()1> 來建

屬性

名稱

  • 類型: string : Name
  • 說明: 講師的名稱,用於參考此講師,而不是在呼叫其他功能時。

方法

加入頻道

  • 參數: string : channelName
  • 說明: 以所提供的 channelName 添加音頻至頻道
  • 返回: 無效

離開頻道

  • 參數: string : channelName
  • 說明: 移除講師從頻道中以指定的 channelName
  • 返回: 無效

取得ChannelList

  • 參數:
  • 說明: 返回所有講師在的頻道的名稱。
  • 返回: array< string >

是否在通道中

  • 參數: string : channelName
  • 說明: 返回是否在 channelName 通道上有講演者。
  • 返回: 是/否

發送訊息

  • 參數: string : message ,0> Li字串rary.string0> : 3> channelName3> , 典典< 6> Li字串rary.string6> , 變體< 9> extraData 9>
  • 說明: 讓發言者說 message 並且返回創建此對象的 聊天訊息 對象。
  • 返回: 聊天訊息

發送訊息

  • 參數: string : message ,0> Li字串rary.string0> : 3> channe頻道3> ,6> Library.strin字串6> : 9> 從發訊息者 9>
  • 說明: 傳送訊息給 聊天對話器 使用指定的 fromSpeaker 名稱。如果沒有此名稱的發言者在頻道中,此方法會創建警告,發言者將無法看到訊息。
  • 返回: 無效

發送系統訊息

  • 參數: string : message ,0> Library.strin字串0> : 3> channelName 3>
  • 說明: 傳送系統訊息給 聊天頻道 使用 channelName 指定的。如果發言人不在頻道中,這個訊息會創建警告,其他頻道的講師將不會看到訊息。
  • 返回: 無效

取得玩家

  • 參數:
  • 說明: 返回與喇叭相關的 Player 對象。如果喇叭不是為用戶 (一個機器人) 而設,這將返回 nil
  • 返回: Playernil

設定額外資料

  • 參數: string : key ,變體 0> data0>
  • 說明: 設置一些額外的資料為發言人在特定 key 下。當發言人發送 聊天訊息 時,這些資料會附在訊息上,如果沒有提供訊息。例如,這允許發言人的聊天顏色設設定。
  • 返回: 無效

取得額外資料

  • 參數: string : key
  • 說明: 返回與指定 key 相關的額外資料,使用 SetExtraData 設定。
  • 返回: 變體

設定主要通道

  • 參數: string : channelName
  • 說明: 設置喇叭在指定的頻道上發言。 啟動主要通道設置。
  • 返回: nil

事件

說明

收到訊息

收到系統訊息

  • 參數: 聊天訊息message , 0>Library.strin字串0> : 3>channelName 3>
  • 說明: 發射器收到系統 聊天訊息 從一個 聊天Channel 與指定 0>channelName0> 的聊天訊息。

已加入頻道

  • 參數: string : channelName , 0> Library.strin字串0> : 3> channelWelcomeMessage 3>
  • 說明: 發射器加入 聊天채널 使用指定的 channelName

通道左

  • 參數: string : channelName
  • 說明: 發射器離開 聊天채널 時,會發出所指定的 channelName

靜音

  • 參數: string : channelName , 0>Library.strin字串0> : 3>reason = nil3> , 6>int6> : 9>duration 9> = 0
  • 說明: 發射時間發射器在 ChatChannel 上使用指定的 channelName 為指定時間(如果提供)。可能或不可能提供 0> reason0>。

已取消靜音

  • 參數: string : channelName
  • 說明: 發射時發射器是 ChatChannel 上的 channelName

額外資料更新

  • 參數: string : key ,變體 0> data0>
  • 說明: 在發射器的額外資料中更新鍵的預設值時發射。

主要通道設置

  • 參數: string : channelName
  • 說明: 發射時,喇叭主頻道已變更為 ChatChannel 並且使用指定的 channelName

聊天訊息

聊天訊息 是由 聊天講師 發送的訊息的資料結構。它包含訊息的內容,包括訊息的長度、是否過濾過 Roblox 以及訊息的外觀。

屬性

ID

  • 類型: int
  • 說明: 訊息的唯一數字標識。

從喇叭

原始通道

  • 類型: string :
  • 說明: 聊天頻道的名稱。

是否過濾

  • 類型: bool
  • 說明: 描述訊息是否被Roblox過濾(如果是,訊息將會變成 nil )

訊息長度

  • 類型: int
  • 說明: 訊息的長度。你可以用這個來生成一個哈希化的字串,如果訊息被過濾。

訊息

  • 類型: string : 或 nil
  • 說明: 文字訊息的文字。此屬性會是 nil 如果 IsFiltered 是真的。

訊息類型

  • 類型: string :
  • 說明: 訊息的類型。這些類型是在聊天模組中描述的:
  • 可能的值: "Message""System" ,0> "MeCommand"0> ,3> "Welcome"3> ,6> "SetCore"6> , 9> "Whisper" 9>

時間

  • 類型: int
  • 說明: 時間標記;訊息創作品時間的 os.time() 值。

額外資料

  • 類型: 字典< string , 變體>
  • 說明: 用於此訊息的標籤。這是用於變更訊息外觀的方法。以下鍵可能存在:

聊天頻道

ChatChannel 是一個儲存單一頻道資料的對象,這是一種方法,以便在 ChatSpeakers 之間交換訊息。它還有存取權限設定,以確定訊息是否可以在 /join 或 0> /leave0> 指令中加入或離開。

由預設,每個用戶都有一個 聊天喇叭 自動加到「全部」和「系統」聊天頻道(雖然「系統」是只讀取的)。如果用戶在 Player.Team 上,他們還會有 access 於僅有的 Team 的頻道。

屬性

名稱

  • 類型: string
  • 說明: 頻道的名稱,用於在其他功能中參考頻道。

歡迎訊息

  • 類型: string
  • 說明: 一個用戶加入頻道時顯示的訊息。

可加入

  • 類型: bool
  • 說明: 確定要否使用 /join 指令手動加入頻道。 使用 ChatSpeaker:JoinChannel() 或其他方式甚至假如此屬性為 false 的情況下,也可以添加用戶至頻道。

可離開

  • 類型: bool
  • 說明: 決定用戶是否手動離開頻道使用 /leave 指令。一個用戶仍然可以使用 ChatSpeaker:LeaveChannel() 或其他方式即使此屬性為 false。

自動加入

  • 類型: bool
  • 說明: 確定玩家的 ChatSpeaker 是否會在加入遊戲時自動加入頻道。非用戶講話機會自動加入頻道,即使此屬性是真的 (您可以使用 ChatSpeaker:JoinChannel() 來做這件事)。

私人

方法

踢鳴喇叭

  • 參數: string : speakerName , 0> Library.strin字串0> : 3> reason = nil 3>
  • 說明: 移除發言人以 speakerName 從通頻道,並向用戶和用戶發言人發送訊息,用戶和發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發
  • 返回: 無效

關閉聲音

  • 參數: string : speakerName , 0>Library.strin字串0> : 3>reason = nil3> , 6>int6> 9>duration = 0 9>
  • 說明: 將講師與指定的 speakerName 在頻道上關閉,以持續時間為秒。如果 duration 為空或為 0 則無效。如果 0> reason0> 為了理由,則會發送訊息至頻道,包含該理由。
  • 返回: 無效

解除噓音器靜音

  • 參數: string : speakerName
  • 說明: 解鎖頻道中的 speakerName 以解鎖講師。
  • 返回: 無效

IsSpeaker 已靜音

  • 參數: string : speakerName
  • 說明: 描述是否有 speakerName 在頻道上現在靜音。
  • 返回: 是/否

取得喇叭列表

  • 參數:
  • 說明: 返回包含當前頻道中所有名稱的 聊天喇叭 列表。
  • 返回: array< string >

發送系統訊息

  • 參數: string : message
  • 說明: 傳送來自 "系統" ChatSpeaker 的訊息至頻道。
  • 返回: 無效

註冊過濾器訊息功能

  • 參數: string : functionId , 0> 函數0> 3> func 3>
  • 說明: 記錄一個過濾功能,func ,由 functionId 指定的通頻道。過濾功能會在0>ChatSpeaker0>、3>ChatMe字串sage3>和 6>Library.string 6>中顯示。變更對話的名稱會持��
  • 返回: 無效
  • 範例:

-- 將此範例放入 ChatModule 的模組內。
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- 義式臘腸披薩裝備
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

取消註冊過濾器訊息功能

  • 參數: string : functionId
  • 說明: 取消註冊過濾器功能(RegisterFilterMessageFunction)的指定器,functionId
  • 返回: 無效

註冊程序命令函數

  • 參數: string : functionId , 0> 函數0> 3> func 3>
  • 說明: 註冊一個過程指令函數,func ,由 functionId 識別的聊天。在訊息被過濾之前,它會通過 0> func
  • 返回: 無效
  • 範例:

-- 將此範例放入 ChatModule 的模組內。
-- 這個範例過濾關鍵字,並且如果成功,設定訊息的聊天顏色
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- 綠色
local function doFilter(speaker, messageObject, channelName)
-- 檢查是否包含關鍵字
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- 從訊息中移除(過篩選器)關鍵字,並且設定聊天顏色
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- 創建一個頻道,並註冊過濾器功能
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

UnregisterProcessCommandsFunction

  • 參數: string : functionId
  • 說明: 取消註冊指定的指令處理器 (RegisterProcessCommandsFunction 註冊),functionId
  • 返回: 無效

事件

發送訊息

  • 參數: 聊天訊息 : message
  • 說明: 發射當訊息被發布在頻道上。

已加入喇叭

  • 參數: string : speakerName
  • 說明: 發射一次,當 ChatSpeaker 加入頻道。

喇叭左

  • 參數: string : speakerName
  • 說明: 發射一次,當 ChatSpeaker 離開頻道。

喇叭靜音

  • 參數: string : speakerName , 0>Library.strin字串0> : 3>reason3> , 6>int6> 9>duration = 0 9>
  • 說明: 發射在 ChatSpeaker 在頻道中被靜音時。

未靜音