TextChatService
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
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
Menentukan apakah terjemahan obrolan diaktifkan.
Menentukan apakah akan sepenuhnya mengaktifkan TextChatService atau kembali ke sistem obrolan lama.
Menentukan apakah TextChatService harus membuat default TextChatCommands.
Menentukan apakah TextChatService harus membuat default TextChannels.
Metode
Menampilkan gelembung obrolan di atas bagian atau karakter pemain yang disediakan.
Menentukan apakah pengguna memiliki izin untuk mengobrol dalam pengalaman.
Menentukan apakah dua pengguna akan menerima pesan satu sama lain atau tidak.
Menentukan apakah pengguna memiliki izin untuk mengobrol langsung dengan pengguna lain dalam pengalaman berdasarkan faktor seperti pengaturan kontrol orangtua mereka.
Acara
Memicu ketika TextChatService:DisplayBubble() dipanggil.
Melepaskan api saat TextChannel:DisplaySystemMessage() dipanggil pada klien, atau saat klien menerima respons valid TextChannel:SendAsync() dari server.
Melepaskan api saat TextChannel:SendAsync() dipanggil oleh klien pengirim.
Callback
Dipanggil saat obrolan gelembung akan ditampilkan.
Dipanggil ketika pesan baru akan ditampilkan di jendela obrolan. Ini hanya dapat dilaksanakan pada klien.
Dipanggil saat TextChatService menerima pesan masuk.
Properti
ChatTranslationEnabled
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
Menentukan apakah akan sepenuhnya mengaktifkan TextChatService atau kembali ke sistem obrolan lama.Mengatur properti ini ke Enum.ChatVersion.LegacyChatService secara efektif menonaktifkan TextChatService .
CreateDefaultCommands
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
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
Bagian atau karakter yang gelembung akan ditampilkan di atas.
Teks yang akan ditampilkan di gelembung obrolan.
Memberikan nilai
CanUserChatAsync
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
Memberikan nilai
CanUsersChatAsync
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
Memberikan nilai
CanUsersDirectChatAsync
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 keduanyaelse-- Pengguna yang meminta tidak dapat mengarahkan obrolan dengan iPad1 atau iPad2end
Perhatikan bahwa metode ini hanya tersedia untuk digunakan dalam Script dengan RunContext dari Enum.RunContext.Server atau Enum.RunContext.Legacy .
Parameter
Pengguna yang akan memulai permintaan obrolan langsung. Jika requesterUserId tidak ada di server saat ini, metode ini akan gagal.
Daftar pengguna yang diinginkan oleh requesterUserId untuk mengobrol secara langsung. Pengguna yang tidak ada di server saat ini diabaikan.
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.
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
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
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
The TextChatMessage dari panggilan TextChannel:SendAsync().
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 .
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.