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 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

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

Hapus Saluran

  • Parameter: string : channelName
  • Deskripsi: Hapus saluran dengan nama yang diberikan
  • Kembalinya: void

Dapatkan Saluran

  • Parameter: string : channelName
  • Deskripsi: Mengembalikan saluran dengan nama yang diberikan, atau nol jika tidak ada.
  • Kembalian: ChatChannel

Tambahkan Pembicara

  • Parameter: string : speakerName
  • Deskripsi: Buat dan tambahkan pembicara ke chat dengan nama yang diberikan, kemudian mengembalikannya.
  • Kembalinya: Pembicara Chat

HapusPembicara

  • Parameter: string : speakerName
  • Deskripsi: Menghapus pembicara dari chat dengan nama yang diberikan.
  • Kembalinya: void

DapatkanPembicara

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

  • Parameter: string : functionId , 0> fungsi0> : 3> func 3>
  • 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

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan fungsi filter (dareRegisterFilterMessageFunction) berdasarkan identifikatornya, functionId .
  • Kembalinya: void

MendaftarProses Komando

  • Parameter: string : functionId , 0> fungsi0> : 3> func 3>
  • 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命令

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan prosesor komando (terdaftar oleh RegisterProcessCommandsFunction ) berdasarkan identifikator, functionId .
  • Kembalinya: void

Acara

Saluran ditambahkan

  • Parameter: string : channelName
  • Deskripsi: Menembak ketika saluran ditambahkan ke chat.

SaluranHilang

  • Parameter: string : channelName
  • Deskripsi: Menembak jika saluran dihapus dari chat.

Pembicara ditambahkan

  • Parameter: string : speakerName
  • Deskripsi: Menembak ketika seorang pembicara ditambahkan ke chat.

Pembunyikan dihapus

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

  • Jenis: string : Name
  • Deskripsi: Nama speaker, digunakan dalam mengacu pada pembicara ini saat memanggil banyak fungsi lainnya.

Metode

Bergabung dengan saluran

  • Parameter: string : channelName
  • Deskripsi: Menambahkan pembicara ke saluran dengan channelName yang diberikan
  • Kembalinya: void

Tinggalkan saluran

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

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

  • Parameter: string : message , 0> Library.string0> : 3> channelName 3>
  • 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

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

  • Parameter: string : key
  • Deskripsi: Mengembalikan data tambahan yang terkait dengan key yang diberikan, ditetapkan menggunakan SetExtraData.
  • Kembalikan: Variasi

TetapkanMainChannel

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

Acara

Pesan yang dikatakan

Menerima Pesan

Menerima Pesan Sistem

  • Parameter: PesanChatmessage , 0> Library.string0> : 3> chanName 3>
  • Deskripsi: Dibakar saat pembicara menerima sistem ChatMessage dari ChatChannel dengan memberikan 0>channelName0> .

SaluranDijuntasi

  • Parameter: string : channelName , 0> Library.string0> : 3> channelWelcomeMessage 3>
  • Deskripsi: Dibakar saat pembicara bergabung dengan ChatChannel dengan channelName yang diberikan.

SaluranKiri

  • Parameter: string : channelName
  • Deskripsi: Dibakar saat pembicara meninggalkan ChatChannel dengan memberikan channelName .

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

  • Parameter: string : channelName
  • Deskripsi:: Dibakar saat pembicara tidak dimute di ChatChannel dengan channelName yang diberikan.

Data Ekstra Diperbarui

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

Set Saluran Utama

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

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

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

  • Jenis: int
  • Deskripsi: Tanggal waktu; nilai os.time() saat kreasipesan.

Data Ekstra

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

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

  • Parameter: string : speakerName , 0> Library.string0> : 3> reason = nil 3>
  • 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

  • Parameter: string : speakerName
  • Deskripsi: Tidak mengumumkan pembicara dengan speakerName yang diberikan di channel.
  • Kembalinya: void

Apakah Speaker Muted

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

  • Parameter: string : message
  • Deskripsi: Mengirim pesan dari "Sistem" ChatSpeaker ke channel.
  • Kembalinya: void

DaftarFilterPesan

  • Parameter: string : functionId , 0> fungsi 0> 3> func 3>
  • 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

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan fungsi filter (dareRegisterFilterMessageFunction) berdasarkan identifikatornya, functionId .
  • Kembalinya: void

MendaftarProses Komando

  • Parameter: string : functionId , 0> fungsi 0> 3> func 3>
  • 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命令

  • Parameter: string : functionId
  • Deskripsi: Tidak mendaftarkan prosesor komando (terdaftar oleh RegisterProcessCommandsFunction) berdasarkan identifikator, functionId .
  • Kembalinya: void

Acara

Pesan yang Diposting

  • Parameter: PesanObrolan : message
  • Deskripsi: Menembak jika pesan diterbitkan di channel.

Pembicara bergabung

  • Parameter: string : speakerName
  • Deskripsi: Menembak ketika seorang ChatSpeaker bergabung dengan channel.

PembicaraKiri

  • Parameter: string : speakerName
  • Deskripsi: Menembak ketika seorang ChatSpeaker meninggalkan channel.

PembicaraTerbunyikan

  • Parameter: string : speakerName , 0> Library.string0> : 3> reason3> , 6> int6> 9> duration = 0 9>
  • Deskripsi: Menyalakan ketika seorang Pembicara Chat telah diam di channel.

PembicaraTidakMuted