Các 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ợ hành vi bên máy chủ của Hệ thống trò chuyện thừa kế bao gồm:

  • ChatService : Một singleton quản lý tất cả các modul trò chuyện khác.
  • ChatSpeaker : Một entidad có thể tạo các tin nhắn trong một ChatChannel; mỗi Player sẽ tự động có một ChatSpeaker và các bốt có thể chat bằng cách tạo ChatSpeakers.
  • ChatMessage : Một container cho nội dung mà một ChatSpeaker gửi đến một ChatChannel; chứa các thẻ nội quy, được sử dụng để format tin nhắn hoặc thêm các chức năng bổ sung cho các 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 đội và trò chuyện gầm.

ChatService

ChatService là một đối tượng đơn giản để xử lý hành vi bên máy chủ của Hệ thống Chat Lua, như ChatChannelsChatSpeakers .

Tất cả ModuleScript s within the ChatModule đường dưới nên trả lại một hàm, và hàm đó sẽ được gọi với singleton ChatService.

Phương pháp

Thêm kênh

  • Các biến: string : channelName
  • Mô tả: Tạo một đối tượng ChatChannel với tên đã được cung cấp và trả lại nó.
  • Trở lại: ChatChannel

Loại bỏ kênh

  • Các biến: string : channelName
  • Mô tả: Xóa một kênh với tên đã được cung cấp
  • Trả về: void

Nhận kênh

  • Các biến: string : channelName
  • Mô tả: Trả lại kênh với tên đã được cung cấp, hoặc nil nếu nó không tồn tại.
  • Trở lại: ChatChannel

Thêm Loa

  • Các biến: string : speakerName
  • Mô tả: Tạo và thêm một loa vào cuộc trò chuyện với tên đã được cung cấp, sau đó trả lại nó.
  • Trả về: ChatSpeaker

Loại bỏ Speaker

  • Các biến: string : speakerName
  • Mô tả: Loại bỏ người nói chuyện khỏi cuộc hội thoại với cái tên đã được cung cấp.
  • Trả về: void

NhậnNgườiNóiChuyện

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

Lấy danh sách kênh

  • Các biến: không có
  • Mô tả: Trả lại một danh sách các tên của tất cả các kênh non-private trong trò chuyện.
  • Trả về: array< string >

Nhận danh sách kênh tự động tham gia

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

Đăng kýFilterMessageFunction

  • Các biến: string : functionId , 0> function0> : 3> func 3>
  • Mô tả: Đăng nhập một chức năng lọc cho cuộc trò chuyện được xác định bởi functionId . Bất kỳ thay đổi nào trong thông điệp sẽ tồn tại và được hiển thị khi thông điệp đi qua tất cả các chức năng lọc khác. Chứ
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
-- Lọc này lọc một từ khóa, và nếu thành công, thiết lập màu chat của tin nhắn
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- màu xanh lá
local function doFilter(speaker, messageObject, channelName)
-- Kiểm tra xem liệu thông điệp có chứa từ khóa
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 như đặt màu 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

Huỷ đăng kýFilterMessageFunction

  • Các biến: string : functionId
  • Mô tả: Không đăng nhập một chức năng lọc (đăng ký bởi RegisterFilterMessageFunction) có nhận dạng, functionId .
  • Trả về: void

Đăng nhập

  • Các biến: string : functionId , 0> function0> : 3> func 3>
  • Mô tả: Đăng nhập một chức năng chỉ mô tả trong functionId . Trước khi một thông điện được lọc, nó sẽ đi qua func (và các chức
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Máy cắt lát thịt xông trang bị
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

Huỷ đăng ký quá trình

Sự kiện

Đã thêm kênh

  • Các biến: string : channelName
  • Mô tả: Khiêu vũ khi một kênh được thêm vào trò chuyện.

Đã xóa kênh

  • Các biến: string : channelName
  • Mô tả: Khiến lửa khi một kênh được loại bỏ khỏi trò chuyện.

Đã thêm loa

  • Các biến: string : speakerName
  • Mô tả: Khiến lửa nếu một người nói chuyện vào cuộc trò chuyện.

SpeakerLoại bỏ

  • Các biến: string : speakerName
  • Mô tả: Khiến lửa nếu một người nói chuyện bị xóa khỏi cuộc hội thoại.

Người nói chuyện

Một SpeakerChat là đại diện của một entidad nào đó 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 SpeakerChat được liên kết. Các Speaker khác có thể được xây dựng cho n

Tính chất

Tên

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

Phương pháp

Tham gia kênh

  • Các biến: string : channelName
  • Mô tả: Thêm loa vào kênh với các thông số đã được cung cấp channelName
  • Trả về: void

Rời kênh

  • Các biến: string : channelName
  • Mô tả: Loại bỏ loa khỏi kênh với các thông số đã được cung cấp channelName
  • Trả về: void

Lấy danh sách kênh

  • Các biến: Không có
  • Mô tả: Trả lại một danh sách các tên kênh mà người nói chuyện đang ở.
  • Trả về: array< string >

Có trong kênh

  • Các biến: string : channelName
  • Mô tả: Trả lại có phải người nói chuyện ở kênh với channelName đã được cung cấp.
  • Trả về: ool

Nói tin nhắn

  • Các biến: string : message , 0> Library.chuỗi0> : 3> channelName3> , dictionary< 6> Library.chuỗi6> , Variant> 9> extraData 9>
  • Mô tả: Khiến loa nói message và trả lại đối tượng ChatMessage đã tạo khi làm như vậy.

Gửi tin nhắn

  • Các biến: string : message , 0> Library.chuỗi0> : 3> kênh3> , 6> Library.chuỗi6> : 9> fromSpeaker 9>
  • Mô tả: Gửi một thông điệp đến ChatSpeaker với cái tên fromSpeaker đã được cung cấp. Nếu không có thông điệp nào trong kênh, phương thức này tạo ra một cảnh báo và thông tin nhắnnày sẽ không được thấy bởi thủ nhà.
  • Trả về: void

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

  • Các biến: string : message , 0> Library.chuỗi0> : 3> channelName 3>
  • Mô tả: Gửi một thông điệp hệ thống đến ChatChannel với các thông tin đã được cung cấp. Nếu người nói chuyện không ở trong kênh, thì thông điệp này sẽ tạo ra một cảnh báo và các người nói tin nhắnkhác trong kênh sẽ không nhìn thấy
  • Trả về: void

NhậnPlayer

  • Các biến: Không có
  • Mô tả: 返回 Player 对象与 loa. Nếu loa không phải là cho một người (một bot) thì điều này sẽ trả lại nil .
  • Trả về: Player hoặc nil

SetExtraData

  • Các biến: string : key , Biến thể 0> data0>
  • Mô tả: Đặt một số dữ liệu bổ sung cho người nói chuyện dưới một key nhất định. Mỗi khi người loachuyện gửi một Tin nhắn trò chuyện này, dữ liệu này được kèm cài đặtvới tin nhắn nếu không có được tin n
  • Trả về: void

Nhận thêm dữ liệu

  • Các biến: string : key
  • Mô tả:: Trả lại dữ liệu thêm được gắn với các key đã được cài đặt bằng cách sử dụng SetExtraData.
  • Trả về: Biến thể

Cài đặt kênh chính

  • Các biến: string : channelName
  • Mô tả: Đặt loa để nói trong kênh cung cấp. Kích hoạt MainChannelSet.
  • Trả về: nil

Sự kiện

Nói chuyện

Tiến hành nhận tin nhắn

Đã nhận được thông điệp hệ thống

Đã tham gia kênh

  • Các biến: string : channelName , 0> Library.chuỗi0> : 3> channelWelcomeMessage 3>
  • Mô tả:: Bắt đầu khi loa nói chuyện với ChatChannel với các thông tin đã được cung cấp channelName .

Cột màn hình bên trái

  • Các biến: string : channelName
  • Mô tả:: Bắt đầu khi người nói chuyện rời khỏi một Kênh trò chuyện với các thông tin đã được cung cấp channelName .

Đã tắt tiếng

  • Các biến: string : channelName , 0> Library.chuỗi0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
  • Mô tả:: Khi loa bị tắt trên ChatChannel với channelName được cung cấp trong thời gian cho phép (nếu có). Có thể hoặc không có một 0> reason0> được cung cấp.

Không bị tắt

  • Các biến: string : channelName
  • Mô tả:: Bắt đầu khi loa được bỏ chum trên ChatChannel với channelName đã được cung cấp.

Cập nhật dữ liệu phụ

  • Các biến: string : key , Biến thể 0> data0>
  • Mô tả:: Bị kích hoạt khi giá trị mặc định của một chìa khóa trong dữ liệu phụ của loa được cập nhật bằng SetExtraData.

MainChannel

  • Các biến: string : channelName
  • Mô tả:: Bắt đầu khi kênh chính của loa được thay đổi thành ChatChannel với channelName được cho.

Tin nhắn trò chuyện

Một Tin nhắn trò chuyện là một cấu trúc dữ liệu diễn tả một thông điệp đã gửi từ một ChatSpeaker . Nó chứa dữ liệu về tin nhắntin nhắn, bao gồm độ dài của văn bản, có phải văn bản đã được lọc bởi Roblox hoặc không và dữ liệu bổ sung về v

Tính chất

Nhận dạng

  • Loại: int
  • Mô tả: Một mã số độc đáo cho tin nhắn.

TừSpeaker

Kênh gốc

  • Loại: string :
  • Mô tả: Tên của ChatChannel từ đó tên thông điệp xuất phát.

Đã lọc

  • Loại: Boolean
  • Mô tả: Mô tả xem xét liệu thông điệp có được lọc bởi Roblox (nếu có, Thông điệp sẽ là nil )

Độ dài tín hiệu

  • Loại: int
  • Mô tả: Độ dài của thông tin nhắn. Bạn có thể sử dụng này để tạo ra một chuỗi đã được xử lý nếu thông điệp được lọc.

Tin nhắn

  • Loại: string : hoặc nil
  • Mô tả: Văn bản của thông tin nhắn. Đặt tính này sẽ là nil nếu đúng.

Kiểu thông điệp

  • Loại: string :
  • Mô tả: Loại của thông tin nhắn. Các loại này được mô tả trong modul ChatCommands:
  • Các giá trị có thể: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore"6> , 9> "Whisper" 9>

Thời gian

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

Dữ liệu phụ

  • Loại: diction< string , Biến thể>
  • Mô tả: Một từ điển của dữ liệu cho thông tin nhắnnày. Điều này được sử dụng để thay đổi vẻ ngoài của thông tin nhắn. Các chìa khóa sau đây có thể hiện diện:

Kênh trò chuyện

ChatChannel là một đối tượng để lưu trữ dữ liệu về một kênh, which là một phương tiện để tin nhắn có thể được trao đổi giữa ChatSpeakers . Nó cũng có các đặc tính quyền truy cập mà xác định sự hiển thị củ

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

Tính chất

Tên

  • Loại: string
  • Mô tả: Tên kênh, được sử dụng để tham chiếu 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 thông điệp để hiển thị khi một người tham gia kênh.

Tham gia được

  • Loại: Boolean
  • Mô tả: Xác định whether a user may manually join a channel using the /join command. A user can still be added to a channel using ChatSpeaker:JoinChannel() or other means even if this property is false.

Rời được

  • Loại: Boolean
  • Mô tả: Xác định có thể một người có thể rời khỏi một kênh bằng cách sử dụng lệnh /leave . Một người vẫn có thể bị xóa khỏi một kênh bằng cách sử dụng ChatSpeaker:LeaveChannel() hoặc các phương tiện khác ngay cả khi đó là giả sử.

Tự động tham gia

  • Loại: Boolean
  • Mô tả: Xác định whether a người chơi's ChatSpeaker will automatically join the channel upon joining the trò chơi. non-user speakers will not automatically join channels, even when this property is true (bạn có thể sử dụng ChatSpeaker:JoinChannel() để làm điều này).

Riêng tư

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

Phương pháp

Túi đựng loa

  • Các biến: string : speakerName , 0> Library.chuỗi0> : 3> reason = nil 3>
  • Mô tả: Loại bỏ loa với các thông số đã được cung cấp speakerName từ kênh, gửi một thông điệp cho người dùng và kênh mà người dùng đã bị kick. Nếu một reason được cung cấp, lý do sẽ được bao gồm trong thông tin nhắn.
  • Trả về: void

Tắt tiếng nói

  • Các biến: string : speakerName , 0> Library.chuỗi0> : 3> reason = nil3> , 6> int6> 9> duration = 0 9>
  • Mô tả: Tắt máy phát âm với speakerName đã được cho trong kênh trong một thời gian nhất định. Nếu duration là nil hoặc 0, máy phát âm sẽ là vô tận. Nếu 0> reason0> được cung cấp, thì một
  • Trả về: void

Tắt tiếng nói

  • Các biến: string : speakerName
  • Mô tả: Mở khóa người phát tiếng với speakerName đã được đưa vào kênh.
  • Trả về: void

IsSpeakerTắt

  • Các biến: string : speakerName
  • Mô tả:: Mô tả có hiện tại speakerName trong kênh.
  • Trả về: ool

Nhận danh sách loa

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

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

  • Các biến: string : message
  • Mô tả: Gửi một thông điệp từ "System" ChatSpeaker đến kênh.
  • Trả về: void

Đăng kýFilterMessageFunction

  • Các biến: string : functionId , 0> function0> , 3> func 3>
  • Mô tả: Đăng nhập một chức năng lọc, func , được xác định bởi functionId đối với kênh. Chức năng lọc sẽ được gọi với tên functionId , 8
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Máy cắt lát thịt xông trang bị
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

Huỷ đăng kýFilterMessageFunction

  • Các biến: string : functionId
  • Mô tả: Không đăng nhập một chức năng lọc (đăng ký bởi RegisterFilterMessageFunction) có nhận dạng, functionId .
  • Trả về: void

Đăng nhập

  • Các biến: string : functionId , 0> function0> , 3> func 3>
  • Mô tả: Đăng nhập một chức năng của hành động, func , được xác định bởi functionId trong trò chuyện. Trước khi
  • Trả về: void
  • Ví dụ:

-- Sao chép ví dụ này vào một ModuleScript trong thư mục ChatModule.
-- Lọc này lọc một từ khóa, và nếu thành công, thiết lập màu chat của tin nhắn
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- màu xanh lá
local function doFilter(speaker, messageObject, channelName)
-- Kiểm tra xem liệu thông điệp có chứa từ khóa
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 như đặt màu 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 lọc
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Huỷ đăng ký quá trình

  • Các biến: string : functionId
  • Mô tả: Unregisters a command processor (đăng ký bởi RegisterProcessCommandsFunction) given the identifier, functionId .
  • Trả về: void

Sự kiện

Tin nhắn đã đăng

Người bạn đã tham gia

Loa bên trái

Tắt tiếng nói

  • Các biến: string : speakerName , 0> Library.chuỗi0> : 3> reason3> , 6> int6> 9> duration = 0 9>
  • Mô tả:: Khi một Speaker trò chuyện đã bị tắt trong kênh.

Người phát thanh bị tắt