TextChatService

Hiển Thị Bản Đã Lỗi Thời

*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.

Không Thể Tạo
Dịch Vụ

Một dịch vụ xử lý trò chuyện văn bản trong kinh nghiệm, bao gồm managing channels , trang trí tin nhắn, lọc văn bản, creating commands , và phát triển giao diện trò chuyện tùy chỉnh .

Để tìm hiểu thêm, xem Tổng quát TextChatService.

Đối với tùy chỉnh tiếp theo, TextChatService có các con cái đơn nhất sau:

Tóm Tắt

Thuộc Tính

Phương Pháp

  • DisplayBubble(partOrCharacter : Instance,message : string):()

    Hiển thị một bong bóng trò chuyện trên phần hoặc nhân vật người chơi được cung cấp.

  • Sinh Lợi

    Xác định xem người dùng có được phép trò chuyện trong các trải nghiệm hay không.

  • CanUsersChatAsync(userIdFrom : number,userIdTo : number):boolean
    Sinh Lợi

    Xác định xem hai người dùng có nhận được tin nhắn từ nhau hay không.

  • CanUsersDirectChatAsync(requesterUserId : number,userIds : Array):Array
    Sinh Lợi

    Xác định xem người dùng có quyền trò chuyện trực tiếp với người dùng khác trong các trải nghiệm dựa trên các yếu tố như cài đặt kiểm soát cha mẹ của họ.

Sự Kiện

Gọi Lại

Thuộc Tính

ChatTranslationEnabled

Không Sao Chép
Bảo Mật Kịch Bản Roblox
Đọc Song Song

Xác định xem có bật phiên dịch trò chuyện hay không.Nếu đúng, một tin nhắn hệ thống sẽ thông báo cho người chơi khi họ tham gia lần đầu tiên rằng các tin nhắn trò chuyện có thể được dịch sang ngôn ngữ yêu thích của người chơi.

ChatVersion

Bảo Mật Không Thể Tiếp Cận
Đọc Song Song

Xác định xem có nên bật đầy đủ TextChatService hoặc quay lại hệ thống trò chuyện di sản hay không.Đặt thuộc tính này thành Enum.ChatVersion.LegacyChatService hiệu quả vô hiệu hóa TextChatService .

CreateDefaultCommands

Bảo Mật Plugin
Đọc Song Song

Xác định xem TextChatService có nên tạo mặc định TextChatCommands hay không.

Nếu đúng, các TextChatCommands sau đây được tạo và đặt vào một Folder có tên là TextChatCommands bên trong TextChatService :


<th>Biệt danh chính</th>
<th>Biệt danh thứ cấp</th>
<th>Mô tả</th>
<th>Ví dụ sử dụng</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Lệnh RBXClear</b></td>
<td>xóa dọn sạch</td>
<td>cls</td>
<td>Xóa nhật ký trò chuyện cho người dùng địa phương.</td>
<td><code>/cls</code></td>
</tr>
<tr>
<td><b>Lệnh RBXConsole</b></td><td>console</td>
<td />
<td>Mở bảng điều khiển nhà phát triển.</td><td><code>/console</code></td>
</tr>
<tr>
<td><b>Lệnh RBXEmote</b></td>
<td>biểu cảm</td>
<td>e</td>
<td>Chơi biểu cảmtượng cảm xúc avatar.</td>
<td><code>/e khiêu vũ</code></td>
</tr>
<tr>
<td><b>Lệnh trợ giúp RBXHelp</b></td>
<td>giúp đỡgiúp</td>
<td>?</td>
<td>Hiển thị danh sách các lệnh trò chuyện.</td>
<td><code>/trợ giúp</code></td>
</tr>
<tr>
<td><b>Lệnh RBXMuteCommand</b></td>
<td>tắt thông báo</td>
<td>m</td>
<td>Tắt một người dùng bằng Class.Player.Name|Name hoặc Class.Player.DisplayName|DisplayName trong tất cả Class.TextChannel|TextChannels .</td>
<td><code>/m Tên người dùng</code></td>
</tr>
<tr>
<td><b>Lệnh RBXTeamCommand</b></td>
<td>đội</td>
<td>t</td>
<td>Nhập chế độ trò chuyện nhóm nơi các tin nhắn chỉ có thể nhìn thấy được với các đồng nghiệp trong nhóm.</td>
<td><code>/t</code></td>
</tr>
<tr>
<td><b>Lệnh RBXUnmute</b></td>
<td>tắt tiếng</td>
<td>um</td>
<td>Vô hiệu hóa một người dùng bằng Class.Player.Name|Name hoặc Class.Player.DisplayName|DisplayName trong tất cả Class.TextChannel|TextChannels .</td>
<td><code>/um Tên người dùng</code></td>
</tr>
<tr>
<td><b>Lệnh RBXVersion</b></td>
<td>phiên bản</td>
<td>v</td>
<td>Hiển thị phiên bản chat.</td>
<td><code>/phiên bản</code></td>
</tr>
<tr>
<td><b>Lệnh RBXWhisper</b></td>
<td>thì thầm</td>
<td>w</td>
<td>Nhập chế độ thì thầm với một <code>Class.Player</code> khác.</td>
<td><code>/w DisplayName</code> hoặc <code>/w @Username</code></td>
</tr>
</tbody>
Tên

Lưu ý rằng bạn có thể chỉnh sửa, tạo và xóa TextChatCommands ngay cả khi CreateDefaultCommands là đúng. Hãy lưu ý rằng lệnh tắt tiếng và bật tiếng áp dụng cho tất cả TextChannels .

CreateDefaultTextChannels

Bảo Mật Plugin
Đọc Song Song

Xác định xem TextChatService có nên tạo mặc định TextChannels hay không.Nếu đúng, một Folder có tên Kênh Văn Bản được tạo bên trong TextChatService tại thời gian chạy để chứa các TextChannels được mô tả trong bảng dưới đây.Mỗi kênh mặc định có hành vi đặc biệt được mô tả được áp dụng cho các tin nhắn bằng cách sử dụng chức năng gọi lại nội bộ TextChannel.OnIncomingMessage của nó, thay đổi cách tin nhắn xuất hiện khi được gửi qua kênh.Cuộc gọi trả lại được gán tự động hoặc khi chạy (nếu TextChannel tồn tại) hoặc khi tạo TextChannel .


<th>Mô tả</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>RBXTổng</b></td>
<td><code>Class.TextChannel</code> cho tin nhắn của người chơi.Trong cửa sổ trò chuyện, tin nhắn được chỉnh sửa như vậy mà <code>Class.TextChatMessage.PrefixText|PrefixText</code> nhận được một thẻ màu phông chữ <a href="../../../ui/rich-text.md">văn bản giàu</a> để cung cấp cho người chơi trò chuyện tên riêng biệt của họ.Nếu <code>Lớp.Player.Team</code> tồn tại, <code>Lớp.Team.TeamColor</code> được sử dụng thay cho màu tên mặc định.</td>
</tr>
<tr>
<td><b>RBXHệ thống</b></td>
<td><code>Class.TextChannel</code> cho tin nhắn hệ thống.Trong cửa sổ trò chuyện, tin nhắn được chỉnh sửa như vậy mà <code>Class.TextChatMessage.Text</code> được đưa ra một thẻ màu xám nhạt mặc định, hoặc một thẻ màu đỏ nếu <code>Class.TextChatMessage.Metadata</code> chứa từ <code>"Lỗi"</code> .</td>
</tr>
<tr>
<td><b>RBXTeam[Màu gạch]</b></td>
<td><code>Class.TextChannel</code> cho tin nhắn của người chơi cụ thể cho đội, được tạo khi một <code>Class.Team.TeamColor|TeamColor</code> đang được sử dụng bởi bất kỳ <code>Class.Team</code> nào trong dịch vụ <code>Class.Teams</code> .Tên kênh được tạo là <b>RBXTeam</b> theo sau bởi tên <code>Class.Team.TeamColor|TeamColor</code>.Ví dụ, RBXTeamCrimson là một Class.TextChannel được tạo khi có một đội hoạt động mà Class.Team.TeamColor|TeamColor tính chất của nó là "Crimson" Datatype.BrickColor .Trong cửa sổ trò chuyện, các tin nhắn được chỉnh sửa theo cách mà Class.TextChatMessage.PrefixText|PrefixText được màu theo đúng Class.Player.TeamColor|TeamColor và được thêm vào với [Team] .Các kênh đội tạo ra Class.TextSource|Textources cho tất cả những người chơi không Class.Player.Neutral|Neutral phù hợp với tính chất của nó, cho phép họ sử dụng trò chuyện đội chỉ dành riêng.Kênh sẽ bị xóa nếu không còn đội nào với một lớp <code>Class.Team.TeamColor|TeamColor</code> có liên quan.</td>
</tr>
<tr>
<td><b>RBXWhisper:[Tên người dùng1][Username2]</b></td>
<td><code>Class.TextChannel</code> cho các tin nhắn thì thầm giữa hai người chơi, được tạo khi một người chơi sử dụng lệnh <code>/whisper</code> trên người chơi khác.Ví dụ RBXWhisper:2276836_505306092 là một Class.TextChannel cho người chơi với Class.Player.UserId|UserIds và 2276836 . Bên trong kênh thì thầm có hai <code>Class.TextSource|Textources</code> liên quan đến lần lượt <code>Class.Player.UserId|UserIds</code> .Trong cửa sổ trò chuyện, tin nhắn được màu giống như những tin nhắn trong <b>RBXGeneral</b> và <code>Class.TextChatMessage.PrefixText</code> được sửa đổi để hiển thị xem liệu tin nhắn có được gửi từ hoặc nhận bởi người dùng địa phương hay không.Kênh thì thầm bị xóa khi một trong hai người chơi rời khỏi trải nghiệm.</td>
</tr>
</tbody>
Kênh

Lưu ý rằng các cuộc gọi trả lại mặc định TextChannel.OnIncomingMessage có thể bị viết lại.Cũng lưu ý rằng bạn có thể chỉnh sửa, tạo và xóa TextChannels ngay cả khi CreateDefaultTextChannels là đúng.

Các tin nhắn từ các Kênh Văn Bản khác nhau có thể được tách ra thành các tab khác nhau trong cửa sổ trò chuyện bằng cách sử dụng ChannelTabsConfiguration .

Phương Pháp

DisplayBubble

()

Hiển thị một bong bóng trò chuyện trên phần hoặc nhân vật người chơi được cung cấp, và kích hoạt sự kiện BubbleDisplayed với các tham số được định cấu trong phương pháp này.Có thể hiển thị bong bóng cho nhân vật không chơi (NPC) nếu bạn xác định một phần trong nhân vật, chẳng hạn như đầu của nó.

Lưu ý rằng phương pháp này chỉ có thể sử dụng trong LocalScript , hoặc trong Script với RunContext của Enum.RunContext.Client .

Tham Số

partOrCharacter: Instance

Phần hoặc nhân vật mà bong bóng sẽ được hiển thị phía trên.

Giá Trị Mặc Định: ""
message: string

Văn bản được hiển thị trong bong bóng trò chuyện.

Giá Trị Mặc Định: ""

Lợi Nhuận

()

CanUserChatAsync

Sinh Lợi

Xác định xem người dùng có được phép trò chuyện trong các trải nghiệm hay không.Các yếu tố như cài đặt kiểm soát cha mẹ có thể ngăn người dùng gửi tin nhắn.Lỗi nếu ID người dùng không ở trong máy chủ hiện tại.Lưu ý rằng phương pháp này có thể được sử dụng với tất cả người chơi hiện tại UserIds trong một Script với RunContext của Enum.RunContext.Server hoặc Enum.RunContext.Legacy .Phương pháp này cũng có thể được sử dụng trong một LocalScript nhưng chỉ với UserId của người chơi địa phương.

Tham Số

userId: number
Giá Trị Mặc Định: ""

Lợi Nhuận

CanUsersChatAsync

Sinh Lợi

Xác định xem hai người dùng có nhận được tin nhắn từ nhau hay không.Các yếu tố như cài đặt kiểm soát cha mẹ không tương thích hoặc trạng thái bị chặn có thể ngăn chặn việc gửi tin nhắn giữa các người dùng TextChannels nội bộ sử dụng kết quả này để xác định xem có nên gửi tin nhắn giữa các người dùng hay không.Lưu ý rằng phương pháp này chỉ có sẵn để sử dụng trong một Script với RunContext của Enum.RunContext.Server hoặc Enum.RunContext.Legacy .

Tham Số

userIdFrom: number
Giá Trị Mặc Định: ""
userIdTo: number
Giá Trị Mặc Định: ""

Lợi Nhuận

CanUsersDirectChatAsync

Sinh Lợi

Xác định xem người dùng có quyền trò chuyện trực tiếp với người dùng khác trong các trải nghiệm dựa trên cài đặt kiểm soát cha mẹ của họ. Được sử dụng khi:

  • Dòng truyền thông là do người dùng khởi xướng (không phải do nhà phát triển hoặc chơi game khởi xướng)
  • Truy cập vào giao tiếp được đóng và giới hạn

Một ví dụ về trò chuyện trực tiếp là kênh thì thầm giữa hai người dùng.

Bạn có thể sử dụng phương pháp này để cổng các tính năng cụ thể trong trải nghiệm của bạn tùy thuộc vào kết quả.

Khi tạo một TextChannel cho một cuộc trò chuyện trực tiếp, sử dụng TextChannel:SetDirectChatRequester() để đặt requesterUserId để kênh có thể xác định xem có nên gửi tin nhắn cho người dùng hay không.Khi TextChannel.DirectChatRequester không phải là nil, TextChannels nội bộ sử dụng kết quả này để xác định xem có nên gửi tin nhắn cho người dùng hay không.


local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })
if #whoCanDirectChat > 0 then
-- Người yêu cầu ids có thể trò chuyện với ids1, ids2 hoặc cả hai
else
-- Người yêu cầu ids không thể trò chuyện trực tiếp với ids1 hoặc ids2
end

Lưu ý rằng phương pháp này chỉ có thể sử dụng trong Script với RunContext của Enum.RunContext.Server hoặc Enum.RunContext.Legacy .

Tham Số

requesterUserId: number

Người dùng sẽ đã khởi xướng yêu cầu trò chuyện trực tiếp. Nếu requesterUserId không có trong máy chủ hiện tại, phương pháp này sẽ lỗi.

Giá Trị Mặc Định: ""
userIds: Array

Một danh sách người dùng mà người yêu cầu ids muốn trò chuyện trực tiếp. Người dùng không ở trong máy chủ hiện tại bị bỏ qua.

Giá Trị Mặc Định: ""

Lợi Nhuận

Một danh sách người dùng có thể tham gia vào yêu cầu trò chuyện trực tiếp.Nếu không có bất kỳ người dùng nào có thể trò chuyện trực tiếp với requesterUserId, kết quả là một mảng trống.

Mẫu mã

This example checks if two users can chat, creates a new TextChannel, and adds them to it.

CanUsersDirectChatAsync

local TextChatService = game:GetService("TextChatService")
local directChatParticipants = TextChatService:CanUsersDirectChatAsync(userId1, { userId2 })
-- Check for eligible participants
if #directChatParticipants > 0 then
local directChannel = Instance.new("TextChannel")
directChannel.Parent = TextChatService
for _, participant in directChatParticipants do
directChannel:AddUserAsync(participant)
end
return directChannel
end
warn("Could not create TextChannel. Not enough eligible users.")
return nil

Sự Kiện

BubbleDisplayed

Bắt lửa khi TextChatService:DisplayBubble() được gọi.

Tham Số

partOrCharacter: Instance
textChatMessage: TextChatMessage

MessageReceived

Giống như TextChannel.MessageReceived, bắt lửa khi TextChannel:DisplaySystemMessage() được gọi trên khách hàng, hoặc khi khách hàng nhận được một phản hồi hợp lệ TextChannel:SendAsync() từ máy chủ.Sự kiện này chỉ được kích hoạt trên client.

Nếu thuộc tính TextChannel.ShouldDeliverCallback của máy chủ được gắn và trả về false , khách hàng sẽ không bắn TextChatService.MessageReceived .

Sử dụng tham số TextChatMessage để lấy TextSource và văn bản của tin nhắn (với TextChatMessage.Text ).

Tham số TextChatMessage là kết quả cuối cùng của bất kỳ chức năng nào được gắn vào TextChatService.OnIncomingMessage hoặc TextChannel.OnIncomingMessage .

Tham Số

textChatMessage: TextChatMessage

Nhận được TextChatMessage .


SendingMessage

Bắt lửa khi TextChannel:SendAsync() được gọi bởi khách gửi.Sử dụng điều này để cho phép tin nhắn giả mạo được hiển thị cho người dùng trong khi chờ đợi phản hồi từ máy chủ đến TextChannel:SendAsync() .

Tham Số

textChatMessage: TextChatMessage

Gọi Lại

OnBubbleAdded

Gọi khi một cuộc trò chuyện bong bóng sắp được hiển thị. Điều này chỉ có thể được thực hiện trên client.

Sử dụng điều này để tùy chỉnh các tin nhắn bong bóng cá nhân.Nếu cuộc gọi trả lại này trả về một BubbleChatMessageProperties , những thuộc tính này sẽ được áp dụng cho bong bóng liên quan, vượt qua các thuộc tính BubbleChatConfiguration.Nếu một UICorner , UIGradient , hoặc ImageLabel được cha chồng dưới BubbleChatMessageProperties , họ cũng sẽ thay thế lẫn nhau được định nghĩa trong BubbleChatConfiguration .

Nếu tin nhắn trò chuyện được gửi bởi một người chơi, message.TextSource sẽ phù hợp với người chơi đó, và adornee sẽ là nil .

Nếu tin nhắn trò chuyện được gửi qua TextChatService:DisplayBubble() , adornee sẽ là partOrCharacter được cung cấp, và message.TextSource sẽ là nil .

Khi gắn vào khách hàng gửi tin nhắn, cuộc gọi lại này được chạy hai lần: lần đầu tiên khi tin nhắn được gửi và nhận ban đầu địa phương, sau đó lần thứ hai khi khách hàng nhận được kết quả của tin nhắn bị lọc từ máy chủ.

Tham Số

Các đầu vào TextChatMessage .

adornee: Instance

Phần hoặc nhân vật mà tin nhắn trò chuyện bong bóng được gắn vào.


Lợi Nhuận

Nếu một BubbleChatMessageProperties được trả về, các thuộc tính của nó sẽ ghi đè lên các thuộc tính BubbleChatConfiguration .

OnChatWindowAdded

Gọi khi một tin nhắn mới sắp hiển thị trong cửa sổ trò chuyện. Điều này chỉ có thể được thực hiện trên khách hàng.

Sử dụng điều này để tùy chỉnh các tin nhắn riêng xuất hiện trong cửa sổ trò chuyện.Nếu lời gọi lại này trả về một ChatWindowMessageProperties , những thuộc tính này sẽ được áp dụng cho tin nhắn liên quan, vượt qua các thuộc tính ChatWindowConfiguration.Nếu một UIGradient là cha của ChatWindowMessageProperties , nó cũng sẽ thay thế thuộc tính TextColor3 được định nghĩa trong ChatWindowConfiguration .

Khi gắn vào khách hàng gửi tin nhắn, cuộc gọi lại này được chạy hai lần: lần đầu tiên khi tin nhắn được gửi và nhận ban đầu địa phương, sau đó lần thứ hai khi khách hàng nhận được kết quả của tin nhắn bị lọc từ máy chủ.

Tham Số

Các đầu vào TextChatMessage .


Lợi Nhuận

Nếu một ChatWindowMessageProperties được trả về, các thuộc tính của nó sẽ ghi đè lên các thuộc tính ChatWindowConfiguration .

OnIncomingMessage

Gọi khi TextChatService đang nhận một tin nhắn đến. Chỉ có thể thực hiện trên khách hàng.

Sử dụng điều này để trang trí TextChatMessages .Nếu lời gọi lại này trả về một TextChatMessageProperties , những thuộc tính này được hợp nhất với tham số TextChatMessage để tạo một TextChatMessage mới.

Khi gắn vào khách hàng gửi tin nhắn, cuộc gọi lại này được chạy hai lần; đầu tiên khi tin nhắn được gửi và nhận ban đầu địa phương, và một lần nữa khi khách hàng nhận được kết quả của tin nhắn bị lọc từ máy chủ.

Lưu ý rằng cuộc gọi trả lại này chạy trước bất kỳ cuộc gọi trả lại nào khác.

Điều này nên được xác định chỉ một lần trong mã nguồn. Nhiều giao diện sẽ lấn nhau theo cách không xác định.

Tham Số

Các đầu vào TextChatMessage .


Lợi Nhuận

Nếu một TextChatMessageProperties được trả về, các thuộc tính này được kết hợp với tham số TextChatMessage để tạo một TextChatMessage mới với các thuộc tính đó, nếu không, nếu nil được trả về, thì TextChatMessage không được thay đổi.