Anda dapat menggunakan modul obrolan berikut untuk mendukung perilaku server-side dari Legacy Chat System termasuk:
- ChatService : Sinkronisasi tunggal yang mengelola semua modul obrolan lainnya.
- Pembicara Chat : Entitas yang dapat menciptakan pesan di ChatChannel; setiap Player akan secara otomatis memiliki Pembicara Chat dan bot dapat mengobrol dengan menciptakan Pembicara Chat.
- ChatMessage : Container untuk konten yang dikirim oleh ChatSpeaker ke ChatChannel; berisi metadata yang digunakan untuk menyiarkan pesan atau menambahkan fungsionalitas tambahan ke perintah.
- ChatChannel : Saluran di mana ChatSpeakers dapat bertukar Pesan Chat; juga digunakan untuk obrolan tim dan obrolan bising.
Layanan Obrolan
ChatService adalah objek tunggal yang menangani perilaku sisi server dari Lua Chat System, seperti ChatChannels dan ChatSpeakers.
Semua ModuleScript s dalam ChatModuleScript folder harus mengembalikan fungsi, dan fungsi itu akan dipanggil dengan singleton ChatService.
Metode
Tambahkan Kanal
- Deskripsi: Membuat objek ChatChannel dengan nama yang diberikan dan mengembalikannya.
- Kembalian: ChatChannel
Hapus Saluran
- Deskripsi: Hapus saluran dengan nama yang diberikan
- Kembalinya: void
Dapatkan Saluran
- Deskripsi: Mengembalikan saluran dengan nama yang diberikan, atau nol jika tidak ada.
- Kembalian: ChatChannel
Tambahkan Pembicara
- Deskripsi: Buat dan tambahkan pembicara ke chat dengan nama yang diberikan, kemudian mengembalikannya.
- Kembalinya: Pembicara Chat
HapusPembicara
- Deskripsi: Menghapus pembicara dari chat dengan nama yang diberikan.
- Kembalinya: void
DapatkanPembicara
- Deskripsi: Mengembalikan pembicara dengan nama yang diberikan, atau nol jika tidak ada.
- Kembalinya: Pembicara Chat
Dapatkan Daftar Saluran
- Parameter: tidak ada
- Deskripsi: Mengembalikan daftar nama semua saluran non-privat dalam chat.
- Kembalinya: array< string >
Dapatkan Daftar Kanal Otomatis
- Parameter: tidak ada
- Deskripsi: Mengembalikan daftar nama semua saluran dalam chat dengan AutoJoin tetap set ke benar.
- Kembalinya: array< string >
DaftarFilterPesan
- Deskripsi: Daftar fungsi filter ke chat yang diidentifikasi oleh functionId . Setiap perubahan pada pesan akan bertahan dan ditampilkan ketika pesan melewati semua fungsi filter lainnya. Fungsi ini diberikan nama speaker, objek pesan, dan saluran di mana pesan berasal.
- Kembalinya: void
- Contoh:
-- Tempel contoh ini ke dalam ModuleScript di dalam folder ChatModule.
-- Filter ini menyaring kata kunci, dan jika berhasil, tetap warna chat pesan
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- hijau
local function doFilter(speaker, messageObject, channelName)
-- Periksa apakah pesan berisi kata kunci
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Hapus (filter) kata kunci dari pesan, juga menetapkan 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
Tidak mendaftarkanFilterMessageFunction
- Deskripsi: Tidak mendaftarkan fungsi filter (dareRegisterFilterMessageFunction) berdasarkan identifikatornya, functionId .
- Kembalinya: void
MendaftarProses Komando
- Deskripsi: Registers a process command function to the chat identified by functionId . Before a message is filtered, it will pass through func (and other functions registered by this). The function 0> func0> should check whether the message invokes a command. If so, perform the action of the command and return true. Returning true indicates
- Kembalinya: void
- Contoh:
-- Tempel contoh ini ke dalam ModuleScript di dalam folder ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Alat 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
Tidak mendaftar proses命令
- Deskripsi: Tidak mendaftarkan prosesor komando (terdaftar oleh RegisterProcessCommandsFunction ) berdasarkan identifikator, functionId .
- Kembalinya: void
Acara
Saluran ditambahkan
- Deskripsi: Menembak ketika saluran ditambahkan ke chat.
SaluranHilang
- Deskripsi: Menembak jika saluran dihapus dari chat.
Pembicara ditambahkan
- Deskripsi: Menembak ketika seorang pembicara ditambahkan ke chat.
Pembunyikan dihapus
- Deskripsi: Menembak jika seorang pembicara dihapus dari chat.
Pembicara
Sebuah Pembicara adalah representasi dari satu entitas yang dapat berbicara dalam ChatChannel. Setiap Player yang terhubung ke game secara otomatis memiliki ChatSpeaker yang terkait. Selain itu, ChatSpeakers dapat dibangun untuk non-pengguna (seperti pengumum atau pesan jenjang) menggunakan 2>ChatService:AddSpeaker
Properti
Nama
- Deskripsi: Nama speaker, digunakan dalam mengacu pada pembicara ini saat memanggil banyak fungsi lainnya.
Metode
Bergabung dengan saluran
- Deskripsi: Menambahkan pembicara ke saluran dengan channelName yang diberikan
- Kembalinya: void
Tinggalkan saluran
- Deskripsi: Menghapus pembicara dari saluran dengan channelName yang diberikan
- Kembalinya: void
Dapatkan Daftar Saluran
- Parameter: Tidak ada
- Deskripsi: Mengembalikan daftar nama semua saluran yang diberikan pembicara.
- Kembalinya: array< string >
Apakah InChannel
- Deskripsi: Kembalikan apakah pembicara berada di saluran dengan channelName yang diberikan.
- Kembalian: booleh
Katakan Pesan
- Parameter: string : message , 0> Library.string0> : 3> chanネーム3> , dictionary< 6> Library.string6> , Variant> 9> extraData 9>
- Deskripsi: Menyebabkan pembicara mengatakan message dan mengembalikan objek ChatMessage yang dibuat melakukannya.
- Kembalikan: Pesan Obrolan
Kirim Pesan
- Parameter: string : message , 0> Library.string0> : 3> channel3> , 6> Library.string6> : 9> fromSpeaker 9>
- Deskripsi: Mengirim pesan ke ChatSpeaker dengan nama yang diberikan fromSpeaker. Jika tidak ada pembicara seperti itu di channel, metode ini menyajikan peringatan dan pembicara tidak akan melihat pesan.
- Kembalinya: void
Kirim Pesan Sistem
- Deskripsi: Mengirim pesan sistem ke ChatChannel dengan memberikan channelName . Jika pembicara tidak ada di saluran, maka pesan ini akan membuat peringatan dan pembicara lain di saluran tidak akan melihat pesan.
- Kembalinya: void
DapatkanPemain
- Parameter: Tidak ada
- Deskripsi: Mengembalikan objek Player yang terkait dengan speaker. Jika pembicara bukan untuk pengguna (bot) maka ini mengembalikan nil .
- Kembalinya: Player atau nil
TetapkanData Ekstra
- Deskripsi: Tetapkan beberapa data tambahan untuk pembicara di bawah key tertentu. Setiap kali pembicara mengirim pesan ChatMessage ini, data tambahan ini ditambahkan ke pesan jika tidak ada yang secara eksplisit disediakan dengan pesan. Misalnya, ini mengizinkan warna chat speaker.
- Kembalinya: void
DapatkanData Ekstra
- Deskripsi: Mengembalikan data tambahan yang terkait dengan key yang diberikan, ditetapkan menggunakan SetExtraData.
- Kembalikan: Variasi
TetapkanMainChannel
- Deskripsi: Tetapkan pembicara untuk berbicara di channelyang disediakan. Menyalakan MainChannelSet.
- Kembalinya: nil
Acara
Pesan yang dikatakan
Menerima Pesan
Menerima Pesan Sistem
- Deskripsi: Dibakar saat pembicara menerima sistem ChatMessage dari ChatChannel dengan memberikan 0>channelName0> .
SaluranDijuntasi
SaluranKiri
Muted
- Parameter: string : channelName , 0> Library.string0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
- Deskripsi: Dibakar saat pembicara diam di ChatChannel dengan channelName yang diberikan untuk durasi yang diberikan (jika diberikan). Mungkin atau mungkin tidak ada 0> reason0> yang diberikan.
Tidak dimute
Data Ekstra Diperbarui
- Deskripsi:: Dibakar ketika nilai default dari kunci dalam data ekstra speakerdiperbarui menggunakan SetExtraData.
Set Saluran Utama
- Deskripsi:: Dibakar ketika saluran utama pembicara diubah menjadi ChatChannel dengan channelName yang diberikan.
Pesan Obrolan
Sebuah ChatMessage adalah data structure yang mewakili pesan yang dikirim dari ChatSpeaker . Ini berisi data tentang pesan, termasuk panjang teks, apakah teks telah disaring oleh Roblox, dan data tambahan tentang penampilanpesan.
Properti
Pengenal
- Jenis: int
- Deskripsi: A unik identifikator numerik untuk pesan.
DariPembicara
- Jenis: string :
- Deskripsi: Nama ChatSpeaker yang mengirim pesan.
Saluran Asli
- Jenis: string :
- Deskripsi: Nama saluran chat dari mana pesan berasal.
Difilter
- Jenis: booleh
- Deskripsi: Menjelaskan apakah pesan dikurasi oleh Roblox (jika benar, Pesan akan menjadi nil )
Panjang Pesan
- Jenis: int
- Deskripsi: Panjang pesan. Anda dapat menggunakan ini untuk menghasilkan string yang diacak jika pesan diacak.
Pesan
- Deskripsi: Teks pesan. Propinsi ini akan menjadi nil jika IsFiltered benar.
Jenis Pesan
- Jenis: string :
- Deskripsi: Jenis pesan. Jenis-jenis ini dijelaskan dalam modul ChatConstraints:
- Mungkin nilai: "Message" , "System" , 0> "MeCommand"0> , 3> "Welcome"3> , 6> "SetCore" 6> , 9> "Whisper"
Waktu
Data Ekstra
- Jenis: kamus< string , Variasi>
SaluranObrolan
ChatChannel adalah objek yang menyimpan data tentang channeltunggal, yang merupakan cara di mana pesan dapat ditukar antara ChatSpeakers . Ini juga memiliki akses ke properti izin yang menentukan kesalaman pesan bersama dengan apakah pengguna dapat bergabung atau meninggalkan saluran secara manual (menggunakan /join
Secara default, setiap pengguna memiliki Pembicara yang secara otomatis ditambahkan ke saluran chat "Semua" dan "Sistem" (meskipun, "Sistem" dibaca hanya). Jika pengguna berada di Player.Team, mereka juga akan memiliki akses ke saluran untuk hanya Tim tersebut.
Properti
Nama
- Jenis: string
- Deskripsi: Nama channel, digunakan untuk mengacu pada saluran dalam fungsi lain.
Pesan Selamat Datang
- Jenis: string
- Deskripsi: Pesan untuk ditampilkan ketika seorang pengguna bergabung dengan channel.
Dapat Diakses
- Jenis: booleh
- Deskripsi: Determines 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.
Dapat Ditinggalkan
- Jenis: booleh
- Deskripsi: Menentukan apakah pengguna dapat secara manual meninggalkan saluran menggunakan perintah /leave . Seorang pengguna masih dapat dihapus dari saluran menggunakan cara lain bahkan jika property ini adalah false.
Gabungkan Otomatis
- Jenis: booleh
- Deskripsi: Determines whether a pemain's ChatSpeaker will automatically join the channel upon joining the game. non-user speakers will not automatically join channels, even when this property is true (You can use ChatSpeaker:JoinChannel() to do this).
Pribadi
- Jenis: booleh
- Deskripsi: Menentukan apakah saluran akan dianggap dalam daftar saluran yang dikembalikan oleh ChatService:GetChannelList() . Ini untuk mengobrol dengan orang lain dan mengobrol tim.
Metode
PembicaraKick
- Deskripsi: Menghapus pembicara dengan speakerName yang diberikan dari channel, mengirim pesan ke pengguna dan saluran dari mana pengguna diusir. Jika reason diberikan, alasan akan diinclusi dalam pesan.
- Kembalinya: void
Pembicara Mute
- Parameter: string : speakerName , 0> Library.string0> : 3> reason = nil3> , 6> int6> 9> duration = 0 9>
- Deskripsi: Mute pembicara dengan speakerName dalam saluran untuk durasi yang ditentukan dalam detik. Jika duration adalah nol atau 0, mute adalah tidak permanen. Jika 0> reason0> diberikan, maka pesan akan dikirim ke saluran dengan alasan yang termasuk.
- Kembalinya: void
Bunyikan Pembicara
- Deskripsi: Tidak mengumumkan pembicara dengan speakerName yang diberikan di channel.
- Kembalinya: void
Apakah Speaker Muted
- Deskripsi: Menjelaskan apakah pembicara dengan speakerName yang diberikan saat ini diam di channel.
- Kembalian: booleh
Dapatkan Daftar Pembicara
- Parameter: Tidak ada
- Deskripsi: Mengembalikan daftar yang berisi semua jika nama ChatSpeaker saat ini dalam channel.
- Kembalinya: array< string >
Kirim Pesan Sistem
- Deskripsi: Mengirim pesan dari "Sistem" ChatSpeaker ke channel.
- Kembalinya: void
DaftarFilterPesan
- Deskripsi: Registers a filter function, func , identified by functionId untuk channel. Fungsi filter akan dipanggil dengan 0>ChatSpeaker0>, 3>ChatMessage 3> dan Library.string : nama saluran di mana pesan berasal. Perubahan pada pesan
- Kembalinya: void
- Contoh:
-- Tempel contoh ini ke dalam ModuleScript di dalam folder ChatModule.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Alat 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
Tidak mendaftarkanFilterMessageFunction
- Deskripsi: Tidak mendaftarkan fungsi filter (dareRegisterFilterMessageFunction) berdasarkan identifikatornya, functionId .
- Kembalinya: void
MendaftarProses Komando
- Deskripsi: Registers a process command function, func , identified by functionId to the chat. Before a message is filtered, it will pass through 0> func0> (and other functions registered by this). The function 3> func
- Kembalinya: void
- Contoh:
-- Tempel contoh ini ke dalam ModuleScript di dalam folder ChatModule.
-- Filter ini menyaring kata kunci, dan jika berhasil, tetap warna chat pesan
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- hijau
local function doFilter(speaker, messageObject, channelName)
-- Periksa apakah pesan berisi kata kunci
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Hapus (filter) kata kunci dari pesan, juga menetapkan 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
Tidak mendaftar proses命令
- Deskripsi: Tidak mendaftarkan prosesor komando (terdaftar oleh RegisterProcessCommandsFunction) berdasarkan identifikator, functionId .
- Kembalinya: void
Acara
Pesan yang Diposting
- Deskripsi: Menembak jika pesan diterbitkan di channel.
Pembicara bergabung
- Deskripsi: Menembak ketika seorang ChatSpeaker bergabung dengan channel.
PembicaraKiri
- Deskripsi: Menembak ketika seorang ChatSpeaker meninggalkan channel.
PembicaraTerbunyikan
- Deskripsi: Menyalakan ketika seorang Pembicara Chat telah diam di channel.
PembicaraTidakMuted
- Deskripsi: Menembak jika ChatSpeaker tidak dimute.