TextChatService

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Tidak Dapat Dibuat
Layanan

Layanan yang menangani obrolan teks dalam pengalaman, termasuk managing channels , mendekorasi pesan, menyaring teks, creating commands , dan mengembangkan antarmuka obrolan khusus .

Untuk mempelajari lebih lanjut, lihat Panduan Umum Layanan Obrolan Teks.

Untuk kustomisasi lebih lanjut, TextChatService memiliki anak tunggal berikut:

Rangkuman

Properti

Metode

Acara

Callback

Properti

ChatTranslationEnabled

Tidak Direplikasi
Keamanan Skrip Roblox
Baca Paralel

Menentukan apakah terjemahan obrolan diaktifkan.Jika benar, pesan sistem akan memberi tahu pemain ketika mereka pertama kali bergabung dengan pesan obrolan mungkin diterjemahkan ke bahasa pilihan pemain.

ChatVersion

Keamanan Skrip Roblox
Baca Paralel

Menentukan apakah akan sepenuhnya mengaktifkan TextChatService atau kembali ke sistem obrolan lama.Mengatur properti ini ke Enum.ChatVersion.LegacyChatService secara efektif menonaktifkan TextChatService .

CreateDefaultCommands

Keamanan Plugin
Baca Paralel

Menentukan apakah TextChatService harus membuat default TextChatCommands.

Jika benar, berikut TextChatCommands dihasilkan dan dimasukkan ke dalam Folder bernama Perintah Obrolan Teks di dalam TextChatService :


<th>Alias Utama</th>
<th>Aliasi Sekunder</th>
<th>Deskripsi</th>
<th>Contoh Penggunaan</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>Perintah Bersihkan RBX</b></td>
<td>hapus</td>
<td>cls</td>
<td>Menghapus log obrolan untuk pengguna lokal.</td>
<td><code>/cls</code></td>
</tr>
<tr>
<td><b>Perintah Konsol RBX</b></td><td>konsol</td>
<td />
<td>Membuka Konsol Pengembang.</td><td><code>/console</code> ></td>
</tr>
<tr>
<td><b>Perintah Emote RBX</b></td>
<td>emote</td>
<td>e</td>
<td>Memainkan emote avatar.</td>
<td><code>/e menari</code></td>
</tr>
<tr>
<td><b>Perintah Bantuan RBXHelp</b></td>
<td>bantu</td>
<td>?</td>
<td>Menampilkan daftar perintah obrolan.</td>
<td><code>/help</code></td>
</tr>
<tr>
<td><b>Perintah RBXMuteCommand</b></td>
<td>bisukan</td>
<td>m</td>
<td>Mematikan pengguna dengan Class.Player.Name|Name mereka atau Class.Player.DisplayName|DisplayName mereka di semua Class.TextChannel|TextChannels .</td>
<td><code>/m Nama Pengguna</code></td>
</tr>
<tr>
<td><b>Perintah Tim RBX</b></td>
<td>tim</td>
<td>t</td>
<td>Memasuki mode obrolan tim di mana pesan hanya terlihat oleh rekan tim.</td>
<td><code>/t</code></td>
</tr>
<tr>
<td><b>Perintah RBXUnmute</b></td>
<td>tidak bisukan</td>
<td>um</td>
<td>Mematikan pengguna dengan Class.Player.Name|Name mereka atau Class.Player.DisplayName|DisplayName di semua Class.TextChannel|TextChannels .</td>
<td><code>/um Nama Pengguna</code></td>
</tr>
<tr>
<td><b>Perintah Versi RBX</b></td>
<td>versi</td>
<td>v</td>
<td>Menunjukkan versi obrolan.</td>
<td><code>/versi</code></td>
</tr>
<tr>
<td><b>RBXWhisperCommand</b></td>
<td>chat privat</td>
<td>w</td>
<td>Memasuki mode berbisik dengan kelas lain <code>Class.Player</code>.</td>
<td><code>/w DisplayName</code> atau <code>/w @Username</code></td>
</tr>
</tbody>
Nama

Perhatikan bahwa Anda dapat mengedit, membuat, dan menghapus TextChatCommands bahkan jika CreateDefaultCommands benar. Perhatikan juga bahwa perintah mute dan unmute berlaku untuk semua TextChannels .

CreateDefaultTextChannels

Keamanan Plugin
Baca Paralel

Menentukan apakah TextChatService harus membuat default TextChannels.Jika benar, sebuah Folder bernama Saluran Teks dibuat di dalam TextChatService saat menjalankan untuk berisi TextChannels yang dinyatakan dalam tabel di bawah ini.Masing-masing saluran default memiliki perilaku khusus yang dijelaskan yang diterapkan pada pesan menggunakan fungsi panggil balik internalnya TextChannel.OnIncomingMessage, yang mengubah cara pesan muncul saat dikirim melalui channel.Panggil balas ditugaskan secara otomatis entah saat runtime (jika TextChannel ada) atau saat TextChannel dibuat.


<th>Deskripsi</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>RBXUmum</b></td>
<td><code>Class.TextChannel</code> untuk pesan pemain.Di jendela obrolan, pesan dimodifikasi sehingga Class.TextChatMessage.PrefixText|PrefixText menerima tag warna teks kaya untuk memberi pemain obrolan warna nama yang unik.Jika <code>Class.Player.Team</code> ada, <code>Class.Team.TeamColor</code> digunakan sebagai gantinya warna nama default.</td>
</tr>
<tr>
<td><b>SistemRBX</b></td>
<td><code>Class.TextChannel</code> untuk pesan sistem.Di jendela obrolan, pesan dimodifikasi sehingga <code>Class.TextChatMessage.Text</code> diberi tag warna abu-abu muda secara default, atau tag warna merah jika <code>Class.TextChatMessage.Metadata</code> berisi kata <code>"Kesalahan"</code> .</td>
</tr>
<tr>
<td><b>RBXTim[Warna Bata]</b></td>
<td><code>Class.TextChannel</code> untuk pesan pemain khusus tim, dibuat saat <code>Class.Team.TeamColor|TeamColor</code> digunakan oleh setiap <code>Class.Team</code> di dalam layanan <code>Class.Teams</code>.Nama saluran yang dibuat adalah <b>RBXTeam</b> diikuti dengan nama <code>Class.Team.TeamColor|TeamColor</code>.Sebagai contoh, RBXTeamCrimson adalah Class.TextChannel yang dibuat ketika ada tim aktif yang memiliki Class.Team.TeamColor|TeamColor properti yang Class.Team.TeamColor|TeamColor adalah "Crimson" Datatype.BrickColor .Di jendela obrolan, pesan dimodifikasi sehingga Class.TextChatMessage.PrefixText|PrefixText diwarnai sesuai dengan Class.Player.TeamColor|TeamColor dan dipendahkan dengan [Tim] .Saluran tim membuat Class.TextSource|TextSources untuk semua pemain non‑ Class.Player.Neutral|Neutral yang sesuai dengan properti yang cocok, sehingga mereka dapat menggunakan obrolan tim.Saluran dihapus jika tidak ada tim yang tersisa dengan Kelas <code>Class.Team.TeamColor|TeamColor</code> yang terkait.</td>
</tr>
<tr>
<td><b>RBXWhisper:[Username1]_[Username2]</b></td>
<td><code>Class.TextChannel</code> untuk pesan berbisik antara dua pemain, dibuat ketika pemain menggunakan perintah <code>/whisper</code> pada pemain lain.Sebagai contoh RBXWhisper:2276836_505306092 adalah Class.TextChannel untuk pemain dengan Class.Player.UserId|UserIds dan 2276836 . Di dalam saluran berbisik ada dua <code>Class.TextSource|TextSources</code> yang terkait dengan masing-masing <code>Class.Player.UserId|UserIds</code> .Di jendela obrolan, pesan berwarna sama dengan yang ada di <b>RBXGeneral</b> dan <code>Class.TextChatMessage.PrefixText</code> dimodifikasi untuk menunjukkan apakah pesan dikirim dari atau diterima oleh pengguna lokal.Saluran berbisik dihapus ketika salah satu pemain meninggalkan pengalaman.</td>
</tr>
</tbody>
Saluran

Perhatikan bahwa panggilan balik default TextChannel.OnIncomingMessage dapat ditulis ulang.Perhatikan juga bahwa Anda dapat mengedit, membuat, dan menghapus TextChannels bahkan jika CreateDefaultTextChannels benar.

Pesan dari berbagai Saluran Teks dapat dipisahkan menjadi tab berbeda di jendela obrolan menggunakan ChannelTabsConfiguration .

Metode

DisplayBubble

()

Menampilkan gelembung obrolan di atas bagian atau karakter pemain yang disediakan, dan menembakkan peristiwa BubbleDisplayed dengan parameter yang ditentukan dalam metode ini.Dapat menampilkan gelembung untuk karakter non-pemain (NPC) jika Anda menentukan bagian dalam karakter, seperti kepalanya.

Perhatikan bahwa metode ini hanya tersedia untuk digunakan di LocalScript , atau di Script dengan RunContext dari Enum.RunContext.Client .

Parameter

partOrCharacter: Instance

Bagian atau karakter yang gelembung akan ditampilkan di atas.

Nilai Default: ""
message: string

Teks yang akan ditampilkan di gelembung obrolan.

Nilai Default: ""

Memberikan nilai

()

CanUserChatAsync

Hasil

Menentukan apakah pengguna memiliki izin untuk mengobrol dalam pengalaman.Faktor seperti pengaturan kontrol orangtua dapat mencegah pengguna mengirim pesan.Kesalahan jika ID pengguna tidak ada di server saat ini.Perhatikan bahwa metode ini dapat digunakan dengan semua pemain saat ini UserIds di dalam Script dengan RunContext dari Enum.RunContext.Server atau Enum.RunContext.Legacy .Metode ini juga dapat digunakan dalam LocalScript tetapi hanya dengan UserId pemain lokal.

Parameter

userId: number
Nilai Default: ""

Memberikan nilai

CanUsersChatAsync

Hasil

Menentukan apakah dua pengguna akan menerima pesan satu sama lain atau tidak.Faktor seperti pengaturan kontrol orang tua yang tidak kompatibel atau status diblokir dapat mencegah pengiriman pesan antara pengguna TextChannels secara internal menggunakan hasil ini untuk menentukan apakah akan mengirim pesan antara pengguna.Perhatikan bahwa metode ini hanya tersedia untuk digunakan dalam Script dengan RunContext dari Enum.RunContext.Server atau Enum.RunContext.Legacy .

Parameter

userIdFrom: number
Nilai Default: ""
userIdTo: number
Nilai Default: ""

Memberikan nilai

CanUsersDirectChatAsync

Hasil

Menentukan apakah pengguna memiliki izin untuk mengobrol langsung dengan pengguna lain dalam pengalaman berdasarkan pengaturan kontrol orangtua mereka. Harus digunakan saat:

  • Garis komunikasi dimulai oleh pengguna (tidak dimulai oleh pengembang atau gameplay)
  • Akses ke komunikasi ditutup dan terbatas

Contoh obrolan langsung adalah saluran berbisik antara dua pengguna.

Anda dapat menggunakan metode ini untuk mengaktifkan fitur tertentu dalam pengalaman Anda tergantung pada hasilnya.

Saat membuat TextChannel untuk obrolan langsung, gunakan TextChannel:SetDirectChatRequester() untuk mengatur requesterUserId sehingga saluran dapat menentukan apakah akan mengirimkan pesan antara pengguna.Ketika TextChannel.DirectChatRequester tidak nol, TextChannels secara internal menggunakan hasil ini untuk menentukan apakah akan mengirim pesan antara pengguna.


local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })
if #whoCanDirectChat > 0 then
-- Pengguna yang diminta dapat mengarahkan obrolan dengan ID pengguna1, ID pengguna2, atau keduanya
else
-- Pengguna yang meminta tidak dapat mengarahkan obrolan dengan iPad1 atau iPad2
end

Perhatikan bahwa metode ini hanya tersedia untuk digunakan dalam Script dengan RunContext dari Enum.RunContext.Server atau Enum.RunContext.Legacy .

Parameter

requesterUserId: number

Pengguna yang akan memulai permintaan obrolan langsung. Jika requesterUserId tidak ada di server saat ini, metode ini akan gagal.

Nilai Default: ""
userIds: Array

Daftar pengguna yang diinginkan oleh requesterUserId untuk mengobrol secara langsung. Pengguna yang tidak ada di server saat ini diabaikan.

Nilai Default: ""

Memberikan nilai

Daftar pengguna yang bisa berpartisipasi dalam permintaan obrolan langsung.Jika tidak ada pengguna yang dapat mengarahkan obrolan dengan requesterUserId, hasilnya adalah array kosong.

Contoh Kode

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

Acara

BubbleDisplayed

Memicu ketika TextChatService:DisplayBubble() dipanggil.

Parameter

partOrCharacter: Instance
textChatMessage: TextChatMessage

MessageReceived

Seperti TextChannel.MessageReceived , terbakar saat TextChannel:DisplaySystemMessage() diaktifkan pada klien, atau saat klien menerima respons TextChannel:SendAsync() yang valid dari server.Acara ini hanya ditembak pada klien.

Jika properti server TextChannel.ShouldDeliverCallback terikat dan kembali false , klien tidak akan menembak TextChatService.MessageReceived .

Gunakan parameter TextChatMessage untuk mendapatkan TextSource dan teks pesan (dengan TextChatMessage.Text ).

Parameter TextChatMessage adalah hasil akhir dari fungsi apa pun yang terikat pada TextChatService.OnIncomingMessage atau TextChannel.OnIncomingMessage.

Parameter

textChatMessage: TextChatMessage

Yang diterima TextChatMessage .


SendingMessage

Melepaskan api saat TextChannel:SendAsync() dipanggil oleh klien pengirim.Gunakan ini untuk memungkinkan pesan placeholder ditampilkan kepada pengguna saat menunggu respons server ke TextChannel:SendAsync() .

Parameter

textChatMessage: TextChatMessage

Callback

OnBubbleAdded

Dipanggil saat obrolan gelembung akan ditampilkan. Ini hanya dapat dilaksanakan pada klien.

Gunakan ini untuk menyesuaikan pesan obrolan gelembung individu.Jika panggilan balik ini mengembalikan BubbleChatMessageProperties, properti tersebut akan diterapkan ke gelembung yang terkait, menggantikan properti BubbleChatConfiguration.Jika sebuah UICorner , UIGradient , atau ImageLabel diberi warisan di bawah BubbleChatMessageProperties , mereka juga akan menggantikan rekan-rekan masing-masing yang didefinisikan di BubbleChatConfiguration .

Jika pesan obrolan dikirim oleh pemain, message.TextSource akan sesuai dengan pemain itu, dan adornee akan menjadi nil .

Jika pesan obrolan dikirim melalui TextChatService:DisplayBubble() , adornee akan menjadi partOrCharacter yang disediakan, dan message.TextSource akan menjadi nil .

Saat terikat ke klien yang mengirim pesan, panggilan balik ini dijalankan dua kali: pertama ketika pesan awalnya dikirim dan diterima secara lokal, lalu sekali lagi ketika klien menerima hasil pesan yang disaring dari server.

Parameter

Yang masuk TextChatMessage .

adornee: Instance

Bagian atau karakter yang pesan obrolan gelembung dilampirkan ke.


Memberikan nilai

Jika sebuah BubbleChatMessageProperties dikembalikan, propertinya menggantikan properti BubbleChatConfiguration.

OnChatWindowAdded

Dipanggil ketika pesan baru akan ditampilkan di jendela obrolan. Ini hanya dapat dilaksanakan pada klien.

Gunakan ini untuk menyesuaikan pesan individual yang muncul di jendela obrolan.Jika panggilan balasan ini mengembalikan ChatWindowMessageProperties, properti tersebut akan diterapkan ke pesan terkait, menggantikan properti ChatWindowConfiguration.Jika sebuah UIGradient adalah orangtua di bawah ChatWindowMessageProperties , itu juga akan menggantikan properti TextColor3 yang didefinisikan di ChatWindowConfiguration .

Saat terikat ke klien yang mengirim pesan, panggilan balik ini dijalankan dua kali: pertama ketika pesan awalnya dikirim dan diterima secara lokal, lalu sekali lagi ketika klien menerima hasil pesan yang disaring dari server.

Parameter

Yang masuk TextChatMessage .


Memberikan nilai

Jika sebuah ChatWindowMessageProperties dikembalikan, propertinya menggantikan properti ChatWindowConfiguration.

OnIncomingMessage

Dipanggil ketika TextChatService menerima pesan masuk. Hanya dapat dilaksanakan pada klien.

Gunakan ini untuk menghias TextChatMessages .Jika panggilan balasan ini mengembalikan TextChatMessageProperties , properti tersebut digabungkan dengan parameter TextChatMessage untuk membuat baru TextChatMessage .

Saat terikat ke klien yang mengirim pesan, panggilan balik ini dijalankan dua kali; pertama ketika pesan awalnya dikirim dan diterima secara lokal, dan sekali lagi ketika klien menerima hasil pesan yang disaring dari server.

Perhatikan bahwa panggilan balik ini berjalan sebelum panggilan balik lainnya.

Ini harus didefinisikan hanya sekali dalam kode sumber. Beberapa binding akan saling menggantikan dalam cara yang tidak deterministik.

Parameter

Yang masuk TextChatMessage .


Memberikan nilai

Jika sebuah TextChatMessageProperties dikembalikan, properti tersebut digabungkan dengan parameter TextChatMessage untuk membuat baru TextChatMessage dengan properti tersebut, jika tidak, jika nil dikembalikan, maka TextChatMessage tidak diubah.