Mô-đun trò chuyện bên máy chủ

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Bạn có thể sử dụng các mô-đun trò chuyện sau đây để hỗ trợ các hành vi bên máy chủ của hệ thống trò chuyện bao gồm:

  • ChatService : Một đối tượng duy nhất quản lý tất cả các mô-đun trò chuyện khác.
  • ChatSpeaker : Một thực thể có thể tạo tin nhắn trong một Kênh trò chuyện; mỗi Player sẽ tự động có một ChatSpeaker và bots có thể trò chuyện bằng cách tạo ChatSpeaker.
  • Tin nhắn trò chuyện : Một thùng chứa cho nội dung mà một Speaker trò chuyện gửi đến một Kênh trò chuyện; bao gồm metadata được sử dụng để định dạng tin nhắn hoặc thêm chức năng bổ sung cho lệnh.
  • Kênh trò chuyện : Một kênh mà ChatSpeakers có thể trao đổi Tin nhắn trò chuyện; cũng được sử dụng cho trò chuyện nhóm và trò chuyện lén lút.

Dịch vụ chat

ChatService là một đối tượng duy nhất xử lý hành vi bên máy chủ của hệ thống trò chuyện Lua, như ChatChannelsChatSpeakers .

Tất cả ModuleScript s trong thư mục ChatModule phải trả về một chức năng, và chức năng đó sẽ được gọi với các đối tượng duy nhất của ChatService.

Phương pháp

Thêm kênh

  • Tham số: string : channelName
  • Mô tả: Tạo một đối tượng ChatChannel với tên đã cho và trả lại nó.
  • Trả lại: Kênh trò chuyện

Xóa kênh

  • Tham số: string : channelName
  • Mô tả: Loại bỏ một kênh với tên đã cho
  • Trả về: void

Nhận kênh GetChannel

  • Tham số: string : channelName
  • Mô tả: Trả về kênh với tên đã cho, hoặc nil nếu nó không tồn tại.
  • Trả lại: Kênh trò chuyện

Thêm Speaker

  • Tham số: string : speakerName
  • Mô tả: Tạo và thêm một diễn giả vào cuộc trò chuyện với tên đã cho, sau đó trả lại nó.
  • Trả lại: ChatSpeaker

Loại bỏ Speaker

  • Tham số: string : speakerName
  • Mô tả: Loại bỏ người phát biểu khỏi cuộc trò chuyện với tên đã cho.
  • Trả về: void

Nhận Speaker

  • Tham số: string : speakerName
  • Mô tả: Trả về loa với tên được cung cấp, hoặc nil nếu nó không tồn tại.
  • Trả lại: ChatSpeaker

Nhận danh sách kênh GetChannelList

  • Tham số: không có
  • Mô tả: Trả về một danh sách các tên của tất cả các kênh không riêng tư trong trò chuyện.
  • Trả về: array< string >

Nhận danh sách tham gia tự độngJoinChannel

  • Tham số: không có
  • Mô tả: Trả về một danh sách các tên của tất cả các kênh trong trò chuyện với AutoJoin được đặt thành true.
  • Trả về: array< string >

Chức năng RegisterFilterMessage

  • Tham số: string : functionId , chức năng : func
  • Mô tả: Đăng ký một chức năng bộ lọc cho trò chuyện được xác định bởi functionId .Bất kỳ thay đổi nào đối với tin nhắn sẽ tồn tại và được hiển thị khi tin nhắn thông qua tất cả các chức năng lọc khác.Chức năng này truyền tên của người phát, đối tượng tin nhắn và kênh mà tin nhắn bắt nguồn.
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào ModuleScript trong thư mục ChatModules.
-- Ví dụ này lọc một từ khóa, và nếu thành công, thiết lập chatColor của tin nhắn
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- xanh lá
local function doFilter(speaker, messageObject, channelName)
-- Kiểm tra xem tin nhắn có chứa từ khóa hay không
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Loại bỏ (bộ lọc) từ khóa khỏi tin nhắn, cũng thiết lập 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

Chức năng UnregisterFilterMessage

  • Tham số: string : functionId
  • Mô tả: Không đăng ký chức năng bộ lọc (đã đăng ký bởi RegisterFilterMessageFunction) với nhận dạng của nó, functionId .
  • Trả về: void

Chức năng RegisterProcessCommands

  • Tham số: string : functionId , chức năng : func
  • Mô tả: Đăng ký một chức năng lệnh quá trình cho cuộc trò chuyện được xác định bởi functionId .Trước khi tin nhắn được lọc, nó sẽ đi qua func (và các chức năng khác được đăng ký bởi nó).Chức năng func nên kiểm tra xem tin nhắn có kích hoạt lệnh hay không.Nếu vậy, thực hiện hành động của lệnh và trả về true.Trả về true cho thấy tin nhắn thực sự là một lệnh và không nên hiển thị.Chức năng có thể không được đăng ký bằng cách sử dụng UnregisterProcessCommandsFunction.
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào ModuleScript trong thư mục ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Thiết bị cắt pizza 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

Chức năng UnregisterProcess Command

  • Tham số: string : functionId
  • Mô tả: Không đăng ký một máy xử lý lệnh (đã đăng ký bởi RegisterProcessCommandsFunction ) dựa trên nhận dạng, functionId .
  • Trả về: void

Sự kiện

Thêm kênh

  • Tham số: string : channelName
  • Mô tả: Nổ khi một kênh được thêm vào trò chuyện.

Kênh đã bị xóa

  • Tham số: string : channelName
  • Mô tả: Bắt lửa khi một kênh bị xóa khỏi trò chuyện.

Người phát biểu được thêm

  • Tham số: string : speakerName
  • Mô tả: Bắt lửa khi một diễn giả được thêm vào trò chuyện.

Người phát biểu đã bị xóa

  • Tham số: string : speakerName
  • Mô tả: Nổ khi một người phát biểu bị xóa khỏi cuộc trò chuyện.

Người phát thanh trò chuyện

Một Người nói trò chuyện là sự hiện thị của một thực thể có thể nói trong một Kênh trò chuyện.Mỗi Player kết nối với trò chơi tự động có một ChatSpeaker liên quan.Các Speaker trò chuyện bổ sung có thể được xây dựng cho người dùng không (như người thông báo hoặc tin nhắn gợi ý) bằng cách sử dụng ChatService:AddSpeaker() .

Thuộc tính

Tên

  • Loại: string : Name
  • Mô tả: Tên của người phát loa, được sử dụng để tham chiếu đến người phát biểu này trong khi gọi nhiều chức năng khác.

Phương pháp

Kênh tham gia

  • Tham số: string : channelName
  • Mô tả: Thêm người phát vào kênh với channelName được cho
  • Trả về: void

Rời kênh

  • Tham số: string : channelName
  • Mô tả: Loại bỏ người phát khỏi kênh với channelName được cung cấp
  • Trả về: void

Nhận danh sách kênh GetChannelList

  • Tham số: Không có
  • Mô tả: Trả về một danh sách các tên của tất cả các kênh mà người phát biểu ở trong.
  • Trả về: array< string >

Đang có trong kênh IsInChannel

  • Tham số: string : channelName
  • Mô tả: Trả về xem người phát có ở trong kênh với channelName đã cho.
  • Trả lại: bool

Nói tin nhắn

Gửi tin nhắn

  • Tham số: : , : > , > : > , > : >
  • Mô tả: Gửi một tin nhắn đến ChatSpeaker với tên fromSpeaker đã cho.Nếu không có loa như vậy trong kênh, phương pháp này tạo một cảnh báo và loa sẽ không thấy tin nhắn.
  • Trả về: void

Gửi tin nhắn hệ thống

  • Tham số: string : message , string : channelName
  • Mô tả: Gửi một tin nhắn hệ thống đến ChatChannel với channelName được cho .Nếu người phát không ở trong kênh, thì tin nhắn này sẽ tạo một cảnh báo và các diễn giả khác trong kênh sẽ không nhìn thấy tin nhắn.
  • Trả về: void

Nhận người chơi

  • Tham số: Không có
  • Mô tả: Trả về đối tượng Player liên quan đến người phát biểu.Nếu loa không dành cho một người dùng (một bot) thì điều này trả về nil .
  • Trả về: Player hoặc nil

Đặt thêm dữ liệu

  • Tham số: string : key , Biến thể data
  • Mô tả: Đặt một số dữ liệu bổ sung cho người nói dưới một điều kiện cụ thể key .Bất cứ khi nào người phát gửi một Tin nhắn trò chuyện thêm dữ liệu này được gắn vào tin nhắn nếu không có ghi rõ ràng với tin nhắn.Ví dụ, điều này cho phép màu trò chuyện của người loabiểu được cài đặt.
  • Trả về: void

Nhận thêm dữ liệu

  • Tham số: string : key
  • Mô tả: Trả về dữ liệu bổ sung liên quan đến key đã cho, được thiết lập bằng Cài đặt dữ liệu bổ sung.
  • Trả về: Biến thể

Chỉnh kênh chính

  • Tham số: string : channelName
  • Mô tả: Đặt loa phát nói trong kênh được cung cấp. Bắn ra MainChannelSet.
  • Trả lại: nil

Sự kiện

Tin nhắn đã nói

Tin nhận được

Tin nhận đượcSystemMessage

Tham gia kênh

  • Tham số: string : channelName , string : channelWelcomeMessage
  • Mô tả: Bắn khi người nói tham gia Kênh trò chuyện với channelName được cung cấp.

Kênh Trái

  • Tham số: string : channelName
  • Mô tả: Bị bắn khi người nói rời khỏi một Kênh trò chuyện với channelName được cho.

Tắt tiếng

  • Tham số: string : channelName , string : reason = nil , int : duration = 0
  • Mô tả: Bị bắn khi người nói bị tắt tiếng trên Kênh trò chuyện với channelName được cung cấp cho thời gian được cho (nếu có).Có thể hoặc có thể không có một reason được cung cấp.

Bật tiếng

  • Tham số: string : channelName
  • Mô tả: Bị bắn khi người nói được bật tiếng trên Kênh trò chuyện với channelName được cho phép.

Dữ liệu bổ sung được cập nhật

  • Tham số: string : key , Biến thể data
  • Mô tả: Bắn khi giá trị mặc định của một chìa khóa trong dữ liệu bổ sung của người phát được cập nhật bằng cách sử dụng SetExtraData.

Bộ truyền chínhMainChannelSet

  • Tham số: string : channelName
  • Mô tả: Bắn khi kênh chính của loa được thay đổi thành ChatChannel với channelName được cho phép.

Tin nhắn trò chuyện

Một Tin nhắn trò chuyện là một cấu trúc dữ liệu đại diện cho một tin nhắn được gửi từ một Người phát trò chuyện.Nó chứa dữ liệu về tin nhắn, bao gồm chiều dài của văn bản, xem văn bản đã được lọc bởi Roblox hay không, và dữ liệu bổ sung về sự xuất ngoại hìnhcủa tin nhắn.

Thuộc tính

ID

  • Loại: int
  • Mô tả: Một nhận dạng số duy nhất cho tin nhắn.

Từ Speaker

Kênh gốc

Bị lọc

  • Loại: bool
  • Mô tả: Mô tả xem liệu tin nhắn có bị lọc bởi Roblox (nếu đúng, tin nhắn sẽ là nil )

Chiều dài tin nhắn

  • Loại: int
  • Mô tả: Chiều dài của tin nhắn. Bạn có thể sử dụng điều này để tạo một chuỗi bị mã hóa nếu tin nhắn đã bị lọc.

Tin nhắn

  • Loại: string : hoặc nil
  • Mô tả: Văn bản của tin nhắn. Thuộc tính này sẽ là nil nếu IsFiltered là true.

Loại tin nhắn

  • Loại: string :
  • Mô tả: Loại của tin nhắn. Các loại này được mô tả trong mô-đun ChatConstants:
  • Các giá trị có thể: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"

Thời gian

  • Loại: int
  • Mô tả: Một thời gian; giá trị của os.time() tại thời điểm sản phẩmtin nhắn.

Dữ liệu bổ sung

  • Loại: từ điển< string , Biến thể>
  • Mô tả: Một từ điển của metadata cho tin nhắn này.Nó được sử dụng để thay đổi sự xuất hiện của tin nhắn.Các chìa khóa sau có thể hiện diện:

Kênh trò chuyện

Kênh trò chuyện là một đối tượng lưu trữ dữ liệu về một kênh duy nhất, đó là một cách mà tin nhắn có thể được trao đổi giữa Người phát biểu trò chuyện.Nó cũng có các thuộc tính quyền truy cập xác định tầm nhìn của tin nhắn cùng với việc người dùng có thể tham gia hoặc rời khỏi kênh thủ công (sử dụng /join hoặc /leave lệnh).

Mặc định, mỗi người dùng có một ChatSpeaker được thêm tự động vào kênh trò chuyện "Tất cả" và "Hệ thống" (mặc dù, "Hệ thống" chỉ đọc).Nếu người dùng ở trên một Player.Team, họ cũng sẽ có quyền truy cập vào một kênh chỉ cho đội đó.

Thuộc tính

Tên

  • Loại: string
  • Mô tả: Tên của kênh, được sử dụng để tham chiếu đến kênh trong các chức năng khác.

Tin nhắn chào mừng

  • Loại: string
  • Mô tả: Một tin nhắn để hiển thị khi người dùng tham gia kênh.

Tham gia được

  • Loại: bool
  • Mô tả: Xác định xem người dùng có thể tham gia kênh bằng tay bằng lệnh /join hay không.Một người dùng vẫn có thể được thêm vào kênh bằng cách sử dụng ChatSpeaker:JoinChannel() hoặc cách khác ngay cả khi thuộc tính này là sai.

Có thể bỏ đi

  • Loại: bool
  • Mô tả: Xác định xem người dùng có thể bỏ kênh bằng tay bằng lệnh /leave hay không.Một người dùng vẫn có thể bị xóa khỏi kênh bằng cách sử dụng ChatSpeaker:LeaveChannel() hoặc cách khác ngay cả khi thuộc tính này là sai.

Tham gia tự động

  • Loại: bool
  • Mô tả: Xác định xem người chơi có ChatSpeaker sẽ tự động tham gia kênh khi tham gia trò chơi hay không.Các loa phát thanh không người dùng sẽ không tự động tham gia kênh, ngay cả khi tính năng này là đúng (Bạn có thể sử dụng ChatSpeaker:JoinChannel() để làm điều này).

Riêng tư

  • Loại: bool
  • Mô tả:: Xác định xem kênh có được bao gồm trong danh sách kênh được trả về bởi ChatService:GetChannelList().Điều này cho cuộc trò chuyện thì thầm và cuộc trò chuyện nhóm.

Phương pháp

Người phát biểu kicker

  • Tham số: string : speakerName , string : reason = nil
  • Mô tả: Loại bỏ người phát với speakerName được cung cấp từ kênh, gửi một tin nhắn cho cả người dùng và kênh mà người dùng bị đuổi ra.Nếu một reason được cung cấp, lý do sẽ được bao gồm trong tin nhắn.
  • Trả về: void

Người phát sóng tắt tiếng

  • Tham số: string : speakerName , string : reason = nil , intduration = 0
  • Mô tả: Tắt người phát với speakerName được cho trong kênh trong một thời gian được xác định bằng giây.Nếu durationnil hoặc 0, tắt tiếng là vô cực.Nếu reason được cung cấp, thì một tin nhắn sẽ được gửi đến kênh với lý do bao gồm.
  • Trả về: void

Ngưng tắt loa

  • Tham số: string : speakerName
  • Mô tả: Tắt người phát với speakerName được cho trong kênh.
  • Trả về: void

Người phát nói tắt tiếng

  • Tham số: string : speakerName
  • Mô tả: Mô tả xem có phải người nói với speakerName được đưa vào kênh hiện đang bị tắt hay không.
  • Trả lại: bool

Nhận danh sách loa phát nói

  • Tham số: Không có
  • Mô tả: Trả về một danh sách chứa tất cả nếu tên của ChatSpeaker hiện đang có trong kênh.
  • Trả về: array< string >

Gửi tin nhắn hệ thống

  • Tham số: string : message
  • Mô tả: Gửi một tin nhắn từ "Hệ thống" ChatSpeaker đến kênh.
  • Trả về: void

Chức năng RegisterFilterMessage

  • Tham số: string : functionId , chức năngfunc
  • Mô tả: Đăng ký một chức năng bộ lọc, func , được xác định bởi functionId để kênh.Chức năng lọc sẽ được gọi với ChatSpeaker, ChatMessagestring tên kênh mà tin nhắn bắt nguồn từ.Các thay đổi cho tin nhắn sẽ tồn tại và sẽ được hiển thị sau khi lọc.
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào ModuleScript trong thư mục ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Thiết bị cắt pizza 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

Chức năng UnregisterFilterMessage

  • Tham số: string : functionId
  • Mô tả: Không đăng ký chức năng bộ lọc (đã đăng ký bởi RegisterFilterMessageFunction) với nhận dạng của nó, functionId .
  • Trả về: void

Chức năng RegisterProcessCommands

  • Tham số: string : functionId , chức năngfunc
  • Mô tả: Đăng ký một chức năng lệnh quá trình, func , được xác định bởi functionId để chat.Trước khi tin nhắn được lọc, nó sẽ đi qua func (và các chức năng khác được đăng ký bởi nó).Chức năng func nên kiểm tra xem tin nhắn có kích hoạt lệnh hay không.Nếu vậy, thực hiện hành động của lệnh và trả về true.Trả về true cho thấy tin nhắn thực sự là một lệnh và không nên hiển thị.Chức năng có thể không được đăng ký bằng cách sử dụng UnregisterProcessCommandsFunction.
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào ModuleScript trong thư mục ChatModules.
-- Ví dụ này lọc một từ khóa, và nếu thành công, thiết lập chatColor của tin nhắn
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- xanh lá
local function doFilter(speaker, messageObject, channelName)
-- Kiểm tra xem tin nhắn có chứa từ khóa hay không
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Loại bỏ (bộ lọc) từ khóa khỏi tin nhắn, cũng thiết lập ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Tạo một kênh và đăng ký chức năng bộ lọc
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Chức năng UnregisterProcess Command

  • Tham số: string : functionId
  • Mô tả: Không đăng ký một máy xử lý lệnh (đã đăng ký bởi RegisterProcessCommandsFunction) dựa trên nhận dạng, functionId .
  • Trả về: void

Sự kiện

Thông điệp được đăng

Tham gia loa phát biểu

  • Tham số: string : speakerName
  • Mô tả: Bắt lửa khi một ChatSpeaker tham gia kênh.

Người phát biểuLeft

  • Tham số: string : speakerName
  • Mô tả: Bắt lửa khi một ChatSpeaker rời kênh.

Người phát nói tắt tiếng

  • Tham số: string : speakerName , string : reason , intduration = 0
  • Mô tả: Bắt lửa khi một ChatSpeaker đã bị tắt trong kênh.

Người phát nói bị tắt tiếng

  • Tham số: string : speakerName
  • Mô tả: Bắt lửa khi một ChatSpeaker được bật lên.

Trên trang này