Anda dapat menggunakan modul obrolan berikut untuk mendukung perilaku sisi server dari sistem obrolan Legacy termasuk:
- Layanan Obrolan : Sebuah tunggal yang mengelola semua modul obrolan lainnya.
- Speaker Obrolan : Entitas yang dapat membuat pesan di Saluran Obrolan; masing-masing Player akan secara otomatis memiliki Speaker Obrolan dan bot dapat mengobrol dengan membuat Speaker Obrolan.
- Pesan Obrolan : Kontainer untuk konten yang dikirim oleh Speaker Obrolan ke Saluran Obrolan; berisi metadata yang digunakan untuk memformat pesan atau menambahkan fungsi tambahan ke perintah.
- Saluran Obrolan : Saluran di mana Pembicara Obrolan dapat menukar Pesan Obrolan; juga digunakan untuk obrolan tim dan obrolan diam.
Layanan Obrolan
Layanan Obrolan adalah objek tunggal yang menangani perilaku sisi server dari sistem obrolan Lua, seperti Saluran Obrolan dan Pembicara Obrolan.
Semua ModuleScript s dalam folder Modul Obrolan harus mengembalikan fungsi, dan fungsi itu akan dipanggil dengan tunggalan ChatService.
Metode
Tambahkan Channel
- Deskripsi: Membuat objek ChatChannel dengan nama yang diberikan dan mengembalikannya.
- Kembalinya: Saluran Obrolan
Hapus saluran
- Deskripsi: Hapus saluran dengan nama yang diberikan
- Kembali: kosong
Dapatkan Channel
- Deskripsi: Kembalikan saluran dengan nama yang diberikan, atau nil jika tidak ada.
- Kembalinya: Saluran Obrolan
Tambahkan Speaker
- Deskripsi: Buat dan tambahkan pembicara ke obrolan dengan nama yang diberikan, lalu returnnya.
- Kembali: Pembicara Obrolan
Lepaskan Pembicara
- Deskripsi: Menghapus pembicara dari obrolan dengan nama yang diberikan.
- Kembali: kosong
Dapatkan Speaker
- Deskripsi: Kembalikan pembicara dengan nama yang diberikan, atau nil jika tidak ada.
- Kembali: Pembicara Obrolan
Dapatkan Daftar Kanal GetChannelList
- Parameter: tidak ada
- Deskripsi: Memberikan daftar nama semua saluran non-pribadi di chat.
- Kembali: array< string >
Dapatkan Daftar Saluran Bergabung Otomatis
- Parameter: tidak ada
- Deskripsi: Memberikan daftar nama semua saluran dalam obrolan dengan AutoJoin diatur ke benar.
- Kembali: array< string >
Fungsi Filter Pesan Pendaftaran
- Deskripsi: Mendaftarkan fungsi filter ke obrolan yang diidentifikasi oleh functionId .Setiap perubahan pada pesan akan bertahan dan ditampilkan saat pesan melewati semua fungsi filter lainnya.Fungsi ini mengirimkan nama speaker, objek pesan, dan saluran tempat pesan berasal.
- Kembali: kosong
- Contoh:
-- Tempelkan contoh ini ke dalam ModulScript di dalam folder ChatModules.
-- Contoh ini menyaring kata kunci, dan jika berhasil, mengatur chatColor pesan
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- hijau
local function doFilter(speaker, messageObject, channelName)
-- Periksa apakah pesan mengandung kata kunci
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Hapus (filter) kata kunci dari pesan, juga mengatur 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
Fungsi Filter Pesan Tidak Terdaftar
- Deskripsi: Tidak mendaftarkan fungsi filter (terdaftar oleh RegisterFilterMessageFunction) dengan identifikatornya, functionId .
- Kembali: kosong
Fungsi Komando Proses Pendaftaran
- Deskripsi: Mendaftarkan fungsi perintah proses ke chat yang diidentifikasi oleh functionId .Sebelum pesan disaring, itu akan melewati func (dan fungsi lain yang terdaftar oleh ini).Fungsi func harus memeriksa apakah pesan memanggil perintah.Jika demikian, lakukan tindakan perintah dan kembalikan true.Kembali benar menunjukkan pesan itu memang merupakan perintah dan tidak boleh ditampilkan.Fungsi dapat tidak terdaftar menggunakan UnregisterProcess ArgsFunction.
- Kembali: kosong
- Contoh:
-- Tempelkan contoh ini ke dalam ModulScript di dalam folder ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Peralatan potong 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
Fungsi Komando Proses Pendaftaran Tidak Terdaftar
- Deskripsi: Tidak mendaftarkan prosesor perintah (terdaftar oleh RegisterProcessOpcodeFunction ) dengan identifikator, functionId .
- Kembali: kosong
Peristiwa
Saluran ditambahkan
- Deskripsi: Memicu ketika saluran ditambahkan ke obrolan.
Saluran Dihapus
- Deskripsi: Terbakar saat saluran dihapus dari obrolan.
Speaker Ditambahkan
- Deskripsi: Memicu ketika seorang pembicara ditambahkan ke obrolan.
SpeakerDihapus
- Deskripsi: Menyala ketika seorang pembicara dihapus dari obrolan.
Pembicara Obrolan
Sebuah Pembicara Obrolan adalah representasi dari satu entitas yang dapat berbicara di Saluran Obrolan.Setiap Player terhubung ke game secara otomatis memiliki Speaker Obrolan yang terkait.Speaker Obrolan Tambahan dapat dibangun untuk pengguna non-aktif (seperti pengumum atau pesan petunjuk) menggunakan ChatService:AddSpeaker() .
Propinsi
Nama
- Deskripsi: Nama speaker, digunakan untuk merujuk pembicara ini saat memanggil banyak fungsi lainnya.
Metode
Bergabung dengan Channel
- Deskripsi: Menambahkan pembicara ke saluran dengan channelName
- Kembali: kosong
Tinggalkan Channel
- Deskripsi: Menghapus pembicara dari saluran dengan channelName
- Kembali: kosong
Dapatkan Daftar Kanal GetChannelList
- Parameter:: Tidak ada
- Deskripsi: Memberikan daftar nama semua saluran yang diberikan oleh pembicara.
- Kembali: array< string >
Adalah di Saluran IsInChannel
- Deskripsi: Memberikan apakah pembicara berada di saluran dengan channelName yang diberikan.
- Kembalinya: bool
Katakan Pesan
- Deskripsi: Menyebabkan pembicara mengatakan message dan mengembalikan objek Pesan Obrolan yang dibuat saat melakukannya.
- Kembali: Pesan Obrolan
Kirim Pesan
- Parameternya: : , : , : , :
- Deskripsi: Mengirim pesan ke Pembicara Obrolan dengan nama yang diberikan fromSpeaker .Jika tidak ada pembicara seperti itu di channel, metode ini membuat peringatan dan pembicara tidak akan melihat pesan.
- Kembali: kosong
Kirim Pesan Sistem
- Deskripsi: Mengirim pesan sistem ke ChatChannel dengan channelName yang diberikan.Jika pembicara tidak berada di channel, maka pesan ini akan membuat peringatan dan pembicara lain di saluran tidak akan melihat pesan.
- Kembali: kosong
Dapatkan Pemain
- Parameter:: Tidak ada
- Deskripsi: Memberikan objek Player yang terkait dengan speaker.Jika pembicara tidak untuk pengguna (bot) maka ini akan mengembalikan nil .
- Kembali: Player atau nil
SetData EkstraTetap
- Deskripsi: Mengatur beberapa data tambahan untuk pembicara di bawah spesifik key .Setiap kali pembicara mengirimkan Pesan Obrolan data ekstra ini ditambahkan ke pesan jika tidak ada yang secara eksplisit disediakan dengan pesan.Sebagai contoh, ini memungkinkan warna obrolan speakeruntuk ditetapkan.
- Kembali: kosong
Dapatkan Data Ekstra
- Deskripsi: Memberikan kembali data ekstra yang terkait dengan key yang diberikan, diatur menggunakan SetExtraData.
- Kembali: Variasi
Tetapkan Kanal Utama
- Deskripsi: Tetapkan pembicara untuk berbicara di channelyang disediakan. Memicu MainChannelSet.
- Kembali: nil
Peristiwa
Pesan Terangkat
Pesan Terima
Pesan Sistem Terima
- Deskripsi: Ditembak ketika pembicara menerima sistem Pesan Obrolan dari sebuah Saluran Obrolan dengan channelName yang diberikan.
Join Saluran
- Deskripsi: Ditembak ketika pembicara bergabung dengan ChatChannel dengan channelName yang diberikan.
SaluranKiri
Dibatalkan
- Deskripsi: Ditembak ketika pembicara dibatalkan pada ChatChannel dengan channelName yang diberikan untuk jangka waktu yang diberikan (jika disediakan).Mungkin atau mungkin tidak ada reason yang disediakan.
Dibatalkan
- Deskripsi: Ditembak ketika pembicara tidak dibatalkan pada ChatChannel dengan channelName yang diberikan.
Data Ekstra Dipbarui
- Deskripsi: Ditembak ketika nilai default dari kunci dalam data ekstra speakerdiperbarui menggunakan SetExtraData.
Set Saluran Utama
- Deskripsi: Ditembak ketika saluran utama pembicara diubah ke ChatChannel dengan channelName yang diberikan.
Pesan Obrolan
Sebuah Pesan Obrolan adalah struktur data yang mewakili pesan yang dikirim dari Pembicara Obrolan.Ini berisi data tentang pesan, termasuk panjang teks, apakah teks telah disaring oleh Roblox, dan data tambahan tentang penampilan pesan.
Propinsi
ID
- Jenis: int
- Deskripsi: Pengenal numerik unik untuk pesan.
Dari Speaker
- Jenis: string:
- Deskripsi: Nama dari Pembicara Obrolan yang mengirim pesan.
Saluran Asli
- Jenis: string:
- Deskripsi: Nama dari Saluran Obrolan di mana pesan berasal.
Diter filterkan
- Jenis: bool
- Deskripsi: Menjelaskan apakah pesan disaring oleh Roblox (jika benar, Pesan akan menjadi nil )
Panjang Pesan
- Jenis: int
- Deskripsi: Panjang pesan. Anda dapat menggunakan ini untuk menghasilkan string dihapus jika pesan disaring.
Pesan
- Deskripsi: Teks pesan. Properti ini akan menjadi nil jika IsFiltered benar.
Jenis Pesan
- Jenis: string:
- Deskripsi: Jenis pesan. Jenis ini dijelaskan dalam modul ChatConstants:
- Nilai yang mungkin: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"
Waktu
Data Tambahan
- Jenis: kamus< string , Variasi>
Saluran Obrolan
Saluran Obrolan adalah objek yang menyimpan data tentang channeltunggal, yang merupakan cara untuk menukar pesan di antara Pembicara Obrolan.Ini juga memiliki properti izin akses yang menentukan visibilitas pesan bersama dengan apakah pengguna dapat bergabung atau meninggalkan saluran secara manual (menggunakan /join atau /leave perintah).
Secara default, setiap pengguna memiliki Pembicara Obrolan yang ditambahkan secara otomatis ke saluran obrolan "Semua" dan "Sistem" (meskipun, "Sistem" hanya dibaca).Jika pengguna berada di Player.Team, mereka juga akan memiliki akses ke saluran hanya untuk Tim itu.
Propinsi
Nama
- Jenis: string
- Deskripsi: Nama channel, digunakan untuk merujuk saluran di fungsi lain.
Pesan Selamat Datang
- Jenis: string
- Deskripsi: Pesan yang ditampilkan saat pengguna bergabung dengan channel.
Dapat Bergabung
- Jenis: bool
- Deskripsi: Menentukan apakah pengguna dapat secara manual bergabung dengan saluran menggunakan perintah /join.Pengguna masih dapat ditambahkan ke saluran menggunakan ChatSpeaker:JoinChannel() atau cara lain bahkan jika properti ini palsu.
Dapat ditinggalkan
- Jenis: bool
- Deskripsi: Menentukan apakah pengguna dapat secara manual meninggalkan saluran menggunakan perintah /leave.Pengguna masih dapat dihapus dari saluran menggunakan ChatSpeaker:LeaveChannel() atau cara lain bahkan jika properti ini palsu.
Bergabung Otomatis
- Jenis: bool
- Deskripsi: Menentukan apakah Speaker Obrolan pemain akan secara otomatis bergabung dengan saluran saat bergabung dengan game.Pembicara non-pengguna tidak akan secara otomatis bergabung dengan saluran, bahkan ketika properti ini benar (Anda dapat menggunakan ChatSpeaker:JoinChannel() untuk melakukan ini).
Pribadi
- Jenis: bool
- Deskripsi: Menentukan apakah saluran akan dimasukkan dalam daftar saluran yang dikembalikan oleh ChatService:GetChannelList() .Ini untuk obrolan diam dan obrolan tim.
Metode
Pembicara Tendangan
- Deskripsi: Menghapus pembicara dengan pemberi speakerName dari channel, mengirim pesan kepada pengguna dan saluran dari mana pengguna dikeluarkan.Jika reason disediakan, alasannya akan dimasukkan dalam pesan.
- Kembali: kosong
Pembicara Mute
- Deskripsi: Mengaktifkan pembicara dengan pemberi speakerName di saluran untuk jangka waktu yang ditentukan dalam detik.Jika duration adalah nil atau 0, mute tidak didefinisikan.Jika reason diberikan, maka pesan akan dikirim ke saluran dengan alasan yang disertakan.
- Kembali: kosong
Pembicara Tak Dibatalkan
- Deskripsi: Mematikan pembicara dengan pemberi speakerName di channel.
- Kembali: kosong
Speaker Dibisukan
- Deskripsi: Menjelaskan apakah pembicara dengan speakerName yang diberikan saat ini dimatikan di channel.
- Kembalinya: bool
Dapatkan Daftar SpeakerGetSpeakerList
- Parameter:: Tidak ada
- Deskripsi: Memberikan daftar yang berisi semua jika nama-nama Pembicara Obrolan saat ini ada di channel.
- Kembali: array< string >
Kirim Pesan Sistem
- Deskripsi: Mengirim pesan dari "Sistem" ChatSpeaker ke channel.
- Kembali: kosong
Fungsi Filter Pesan Pendaftaran
- Deskripsi: Mendaftarkan fungsi filter, func , diidentifikasi oleh functionId ke channel.Fungsi filter akan dipanggil dengan ChatSpeaker , ChatMessage , dan string : nama saluran tempat pesan berasal.Perubahan pada pesan akan bertahan dan akan ditampilkan setelah disaring.
- Kembali: kosong
- Contoh:
-- Tempelkan contoh ini ke dalam ModulScript di dalam folder ChatModules.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Peralatan potong 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
Fungsi Filter Pesan Tidak Terdaftar
- Deskripsi: Tidak mendaftarkan fungsi filter (terdaftar oleh RegisterFilterMessageFunction) dengan identifikatornya, functionId .
- Kembali: kosong
Fungsi Komando Proses Pendaftaran
- Deskripsi: Mendaftarkan fungsi perintah proses, func , diidentifikasi oleh functionId untuk obrolan.Sebelum pesan disaring, itu akan melewati func (dan fungsi lain yang terdaftar oleh ini).Fungsi func harus memeriksa apakah pesan memanggil perintah.Jika demikian, lakukan tindakan perintah dan kembalikan true.Kembali benar menunjukkan pesan itu memang merupakan perintah dan tidak boleh ditampilkan.Fungsi dapat tidak terdaftar menggunakan UnregisterProcess ArgsFunction.
- Kembali: kosong
- Contoh:
-- Tempelkan contoh ini ke dalam ModulScript di dalam folder ChatModules.
-- Contoh ini menyaring kata kunci, dan jika berhasil, mengatur chatColor pesan
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- hijau
local function doFilter(speaker, messageObject, channelName)
-- Periksa apakah pesan mengandung kata kunci
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Hapus (filter) kata kunci dari pesan, juga mengatur ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Buat saluran dan daftarkan fungsi filter
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
Fungsi Komando Proses Pendaftaran Tidak Terdaftar
- Deskripsi: Tidak mendaftarkan prosesor perintah (terdaftar oleh RegisterProcess ArgsFunction) dengan identifikasi, functionId .
- Kembali: kosong
Peristiwa
Pesan diposting
- Deskripsi: Menyala saat pesan diposting di channel.
SpeakerBergabung
- Deskripsi: Menyala saat Pembicara Obrolan bergabung dengan channel.
SpeakerKiri
- Deskripsi: Menyala saat Pembicara Obrolan meninggalkan channel.
Speaker Dibisukan
- Deskripsi: Menyala saat Pembicara Obrolan telah dibatalkan di channel.
PembicaraUnmuted
- Deskripsi: Terbakar saat Speaker Obrolan tidak dimatikan.