Modul obrolan sisi server

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

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

  • Parameter: string : channelName
  • Deskripsi: Membuat objek ChatChannel dengan nama yang diberikan dan mengembalikannya.
  • Kembalinya: Saluran Obrolan

Hapus saluran

  • Parameter: string : channelName
  • Deskripsi: Hapus saluran dengan nama yang diberikan
  • Kembali: kosong

Dapatkan Channel

  • Parameter: string : channelName
  • Deskripsi: Kembalikan saluran dengan nama yang diberikan, atau nil jika tidak ada.
  • Kembalinya: Saluran Obrolan

Tambahkan Speaker

  • Parameter: string : speakerName
  • Deskripsi: Buat dan tambahkan pembicara ke obrolan dengan nama yang diberikan, lalu returnnya.

Lepaskan Pembicara

  • Parameter: string : speakerName
  • Deskripsi: Menghapus pembicara dari obrolan dengan nama yang diberikan.
  • Kembali: kosong

Dapatkan Speaker

  • Parameter: string : speakerName
  • Deskripsi: Kembalikan pembicara dengan nama yang diberikan, atau nil jika tidak ada.

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

  • Parameternya: string : functionId , fungsi : func
  • 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

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan fungsi filter (terdaftar oleh RegisterFilterMessageFunction) dengan identifikatornya, functionId .
  • Kembali: kosong

Fungsi Komando Proses Pendaftaran

  • Parameternya: string : functionId , fungsi : func
  • 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

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan prosesor perintah (terdaftar oleh RegisterProcessOpcodeFunction ) dengan identifikator, functionId .
  • Kembali: kosong

Peristiwa

Saluran ditambahkan

  • Parameter: string : channelName
  • Deskripsi: Memicu ketika saluran ditambahkan ke obrolan.

Saluran Dihapus

  • Parameter: string : channelName
  • Deskripsi: Terbakar saat saluran dihapus dari obrolan.

Speaker Ditambahkan

  • Parameter: string : speakerName
  • Deskripsi: Memicu ketika seorang pembicara ditambahkan ke obrolan.

SpeakerDihapus

  • Parameter: string : speakerName
  • 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

  • Jenis: string : Name
  • Deskripsi: Nama speaker, digunakan untuk merujuk pembicara ini saat memanggil banyak fungsi lainnya.

Metode

Bergabung dengan Channel

  • Parameter: string : channelName
  • Deskripsi: Menambahkan pembicara ke saluran dengan channelName
  • Kembali: kosong

Tinggalkan Channel

  • Parameter: string : channelName
  • 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

  • Parameter: string : channelName
  • Deskripsi: Memberikan apakah pembicara berada di saluran dengan channelName yang diberikan.
  • Kembalinya: bool

Katakan Pesan

  • Parameternya: string : message , dictionary< string : channelName , Variasi> string , Variasi> extraData
  • 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

  • Parameternya: string : message , string : channelName
  • 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

  • Parameter: string : key , Variasi data
  • 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

  • Parameter: string : key
  • Deskripsi: Memberikan kembali data ekstra yang terkait dengan key yang diberikan, diatur menggunakan SetExtraData.
  • Kembali: Variasi

Tetapkan Kanal Utama

  • Parameter: string : channelName
  • Deskripsi: Tetapkan pembicara untuk berbicara di channelyang disediakan. Memicu MainChannelSet.
  • Kembali: nil

Peristiwa

Pesan Terangkat

Pesan Terima

Pesan Sistem Terima

Join Saluran

  • Parameternya: string : channelName , string : channelWelcomeMessage
  • Deskripsi: Ditembak ketika pembicara bergabung dengan ChatChannel dengan channelName yang diberikan.

SaluranKiri

  • Parameter: string : channelName
  • Deskripsi: Ditembak ketika pembicara meninggalkan ChatChannel dengan channelName yang diberikan.

Dibatalkan

  • Parameter: string : channelName , string : reason = nil , int : duration = 0
  • 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

  • Parameter: string : channelName
  • Deskripsi: Ditembak ketika pembicara tidak dibatalkan pada ChatChannel dengan channelName yang diberikan.

Data Ekstra Dipbarui

  • Parameter: string : key , Variasi data
  • Deskripsi: Ditembak ketika nilai default dari kunci dalam data ekstra speakerdiperbarui menggunakan SetExtraData.

Set Saluran Utama

  • Parameter: string : channelName
  • 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

Saluran Asli

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

  • Jenis: string : atau nil
  • 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

  • Jenis: int
  • Deskripsi: A timestamp; nilai dari os.time() pada saat kreasipesan.

Data Tambahan

  • Jenis: kamus< string , Variasi>
  • Deskripsi: Dictionari metadata untuk pesan ini.Ini digunakan untuk mengubah tampilan pesan.Kunci berikut mungkin hadir:

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

  • Parameternya: string : speakerName , string : reason = nil
  • 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

  • Parameternya: string : speakerName , string : reason = nil , intduration = 0
  • 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

  • Parameter: string : speakerName
  • Deskripsi: Mematikan pembicara dengan pemberi speakerName di channel.
  • Kembali: kosong

Speaker Dibisukan

  • Parameter: string : speakerName
  • 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

  • Parameter: string : message
  • Deskripsi: Mengirim pesan dari "Sistem" ChatSpeaker ke channel.
  • Kembali: kosong

Fungsi Filter Pesan Pendaftaran

  • Parameternya: string : functionId , fungsifunc
  • 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

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan fungsi filter (terdaftar oleh RegisterFilterMessageFunction) dengan identifikatornya, functionId .
  • Kembali: kosong

Fungsi Komando Proses Pendaftaran

  • Parameternya: string : functionId , fungsifunc
  • 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

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan prosesor perintah (terdaftar oleh RegisterProcess ArgsFunction) dengan identifikasi, functionId .
  • Kembali: kosong

Peristiwa

Pesan diposting

  • Parameter: Pesan Obrolan : message
  • Deskripsi: Menyala saat pesan diposting di channel.

SpeakerBergabung

SpeakerKiri

Speaker Dibisukan

PembicaraUnmuted