您可以使用以下聊天模組來支援 Legacy Chat System 的伺服器端行為,包括:
- ChatService : 單一模塊管理所有其他聊天模塊。
- 聊天對話器 : 可以在聊天頻道中創建訊息的對象;每個 Player 將會自動有一個聊天對話器,並且機器人可以通過創建聊天對話器來聊天。
- 聊天訊息 : 容器對話框內容的聊天講師發送到聊天頻道;包含用於格式化訊息或添加額外功能的指令。
- 聊天頻道 : 一個用於聊天講師交換聊天訊息的頻道;也用於團隊聊天和靜音聊天。
聊天服務
ChatService 是一個單一的對象,負責 Lua 聊天系統的伺服器端行為,例如 ChatChannels 和 ChatSpeakers 。
所有 ModuleScript 內的 s 都在 ChatModule 文件夾內,該文件夾會檢查出一個函數,並且該函數會用於 ChatService 的 singleton。
方法
添加通道
- 說明: 建立 ChatChannel 對象,並將其返回。
- 返回: 聊天頻道
移除通道
- 說明: 移除指定名稱的頻道
- 返回: 無效
取得頻道
- 說明: 以指定的名稱返回頻道,或為不存在的情況下為零。
- 返回: 聊天頻道
增加喇叭
- 說明: 創建並添加一名發言人到聊天,然後將其返回。
- 返回: 聊天對話器
移除喇叭
- 說明: 移除發言人從聊天中使用指定名稱。
- 返回: 無效
取得喇叭
- 說明: 返回發言人,或為它設定的名稱,或為它所不存在的零。
- 返回: 聊天對話器
取得ChannelList
- 參數: 無
- 說明: 返回聊天室中所有非私人頻道的名稱。
- 返回: array< string >
取得自動加入頻道列表
- 參數: 無
- 說明: 返回聊天中設定為 true 的所有頻道的名稱列表。
- 返回: array< string >
註冊過濾器訊息功能
- 說明: 註冊一個過濾器功能到聊天由 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
取消註冊過濾器訊息功能
- 說明: 取消註冊過濾器功能(RegisterFilterMessageFunction)的指定器,functionId。
- 返回: 無效
註冊程序命令函數
- 說明: 註冊聊天對話指定的聊天程序指定的程序指令功能。 在訊息被過濾之前,它會通過 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
- 返回: 無效
事件
已新增的頻道
- 說明: 在聊天室添加頻道時發射。
已移除頻道
- 說明: 會在頻道被從聊天室移除時發射。
已添加喇叭
- 說明: 在有人添加講師到聊天時會發射。
已移除喇叭
- 說明: 發射器當發言者被從聊天中移除時。
聊天對話器
聊天講師 是表示一個可以在 聊天頻道 中發言的實體。每個 Player 連接到遊戲時會自動有一個聊天講師。 額外的聊天講師可以由非用戶建造 (例如公佈人或提示訊息) 使用 1>聊天服務:添加講師()1> 來建
屬性
名稱
- 說明: 講師的名稱,用於參考此講師,而不是在呼叫其他功能時。
方法
加入頻道
- 說明: 以所提供的 channelName 添加音頻至頻道
- 返回: 無效
離開頻道
- 說明: 移除講師從頻道中以指定的 channelName
- 返回: 無效
取得ChannelList
- 參數: 無
- 說明: 返回所有講師在的頻道的名稱。
- 返回: array< string >
是否在通道中
- 說明: 返回是否在 channelName 通道上有講演者。
- 返回: 是/否
發送訊息
- 參數: string : message ,0> Li字串rary.string0> : 3> channelName3> , 典典< 6> Li字串rary.string6> , 變體< 9> extraData 9>
- 返回: 聊天訊息
發送訊息
- 返回: 無效
發送系統訊息
- 返回: 無效
取得玩家
- 參數: 無
- 說明: 返回與喇叭相關的 Player 對象。如果喇叭不是為用戶 (一個機器人) 而設,這將返回 nil 。
- 返回: Player 或 nil
設定額外資料
- 返回: 無效
取得額外資料
- 說明: 返回與指定 key 相關的額外資料,使用 SetExtraData 設定。
- 返回: 變體
設定主要通道
- 說明: 設置喇叭在指定的頻道上發言。 啟動主要通道設置。
- 返回: nil
事件
說明
收到訊息
收到系統訊息
已加入頻道
通道左
靜音
已取消靜音
額外資料更新
- 說明: 在發射器的額外資料中更新鍵的預設值時發射。
主要通道設置
聊天訊息
聊天訊息 是由 聊天講師 發送的訊息的資料結構。它包含訊息的內容,包括訊息的長度、是否過濾過 Roblox 以及訊息的外觀。
屬性
ID
- 類型: int
- 說明: 訊息的唯一數字標識。
從喇叭
原始通道
- 類型: string :
- 說明: 聊天頻道的名稱。
是否過濾
- 類型: bool
- 說明: 描述訊息是否被Roblox過濾(如果是,訊息將會變成 nil )
訊息長度
- 類型: int
- 說明: 訊息的長度。你可以用這個來生成一個哈希化的字串,如果訊息被過濾。
訊息
- 說明: 文字訊息的文字。此屬性會是 nil 如果 IsFiltered 是真的。
訊息類型
- 類型: string :
- 說明: 訊息的類型。這些類型是在聊天模組中描述的:
- 可能的值: "Message" ,"System" ,0> "MeCommand"0> ,3> "Welcome"3> ,6> "SetCore"6> , 9> "Whisper" 9>
時間
額外資料
- 類型: 字典< string , 變體>
聊天頻道
ChatChannel 是一個儲存單一頻道資料的對象,這是一種方法,以便在 ChatSpeakers 之間交換訊息。它還有存取權限設定,以確定訊息是否可以在 /join 或 0> /leave0> 指令中加入或離開。
由預設,每個用戶都有一個 聊天喇叭 自動加到「全部」和「系統」聊天頻道(雖然「系統」是只讀取的)。如果用戶在 Player.Team 上,他們還會有 access 於僅有的 Team 的頻道。
屬性
名稱
- 類型: string
- 說明: 頻道的名稱,用於在其他功能中參考頻道。
歡迎訊息
- 類型: string
- 說明: 一個用戶加入頻道時顯示的訊息。
可加入
- 類型: bool
可離開
- 類型: bool
自動加入
- 類型: bool
- 說明: 確定玩家的 ChatSpeaker 是否會在加入遊戲時自動加入頻道。非用戶講話機會自動加入頻道,即使此屬性是真的 (您可以使用 ChatSpeaker:JoinChannel() 來做這件事)。
私人
- 類型: bool
- 說明: 確定要包含在 ChatService:GetChannelList() 返回的通道列表中嗎。這適用於寂靜聊天和團隊聊天。
方法
踢鳴喇叭
- 說明: 移除發言人以 speakerName 從通頻道,並向用戶和用戶發言人發送訊息,用戶和發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發言人發
- 返回: 無效
關閉聲音
- 說明: 將講師與指定的 speakerName 在頻道上關閉,以持續時間為秒。如果 duration 為空或為 0 則無效。如果 0> reason0> 為了理由,則會發送訊息至頻道,包含該理由。
- 返回: 無效
解除噓音器靜音
- 說明: 解鎖頻道中的 speakerName 以解鎖講師。
- 返回: 無效
IsSpeaker 已靜音
- 說明: 描述是否有 speakerName 在頻道上現在靜音。
- 返回: 是/否
取得喇叭列表
發送系統訊息
- 說明: 傳送來自 "系統" ChatSpeaker 的訊息至頻道。
- 返回: 無效
註冊過濾器訊息功能
- 說明: 記錄一個過濾功能,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
取消註冊過濾器訊息功能
- 說明: 取消註冊過濾器功能(RegisterFilterMessageFunction)的指定器,functionId。
- 返回: 無效
註冊程序命令函數
- 說明: 註冊一個過程指令函數,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
- 說明: 取消註冊指定的指令處理器 (RegisterProcessCommandsFunction 註冊),functionId。
- 返回: 無效
事件
發送訊息
- 說明: 發射當訊息被發布在頻道上。
已加入喇叭
- 說明: 發射一次,當 ChatSpeaker 加入頻道。
喇叭左
- 說明: 發射一次,當 ChatSpeaker 離開頻道。
喇叭靜音
- 說明: 發射在 ChatSpeaker 在頻道中被靜音時。
未靜音
- 說明: 發生當 ChatSpeaker 未靜音。