Sunucu tarafı sohbet modülleri

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Aşağıdaki sohbet modüllerini kullanarak, Miras sohbet sistemi dahil olmak üzere sunucu tarafı davranışlarını destekleyebilirsiniz:

  • Sohbet Hizmeti : Diğer tüm sohbet modüllerini yöneten bir teklif.
  • Sohbet Konuşmacısı : Bir Sohbet Kanalında mesaj oluşturabilen bir varlık; her biri otomatik olarak bir Sohbet Konuşmacısına sahip olacak ve botlar Sohbet Konuşmacıları oluşturarak sohbet edebilir.
  • Sohbet Mesajı : Bir Sohbet Konuşmacısının bir Sohbet Kanalına gönderdiği içerik için bir konteyner; mesajı biçimlendirmek veya komutlara ekstra işlev eklemek için kullanılan metadan oluşur.
  • Sohbet Kanalı : ChatSpeakers'ın SohbetMesajı değiştirebileceği bir kanal; takım sohbeti ve fısıltı sohbeti için de kullanılır.

Sohbet Hizmeti

ChatService bir tezgahüşü nesnesidir ve Lua sohbet sisteminin sunucu tarafı davranışını, örneğin ChatChannels ve ChatSpeakers gibi, ele alır.

Tüm ModuleScript içindeki ChatModule klasörü bir işlev döndürmeli ve bu işlev ChatService örneği ile çağrılmalıdır.

Yöntemler

Kanal Ekle

  • Parametler: string : channelName
  • Açıklama: Verilen adla bir SohbetKanalı nesnesi oluşturur ve geri döndürür.
  • Geri dönüşler: Sohbet Kanalı

Kanalı Kaldır

  • Parametler: string : channelName
  • Açıklama: Verilen adla bir kanalı kaldır
  • Geri dönüşler: void

GetChannel Yayın Alma

  • Parametler: string : channelName
  • Açıklama: Verilen adla kanalı geri döndürür veya yoksa nil.
  • Geri dönüşler: Sohbet Kanalı

AddSpeaker'ı Ekle

  • Parametler: string : speakerName
  • Açıklama: Belirtilen adla sohbete konuşmacı ekleyin ve ardından geri gönderin.
  • Geri dönüşler: Sohbet Konuşmacısı

Konuşmacıyı Kaldır

  • Parametler: string : speakerName
  • Açıklama: Konuşmacıyı verilen isimle sohbetten kaldırır.
  • Geri dönüşler: void

GetSpeaker İçindekiler GetSpeaker

  • Parametler: string : speakerName
  • Açıklama: Konuşmacıyı verilen adıyla geri döndürür veya nil mevcut değilse.
  • Geri dönüşler: Sohbet Konuşmacısı

GetChannelList alın

  • Parametler: hiçbiri
  • Açıklama: Sohbetteki tüm özel olmayan kanalların isimleri listesini döndürür.
  • Geri dönüşler: array< string >

GetAutoJoinChannelList al

  • Parametler: hiçbiri
  • Açıklama: Otomatik Katılım'ın doğru olarak ayarlandığı sohbetteki tüm kanalların isimleri listesini döndürür.
  • Geri dönüşler: array< string >

KayıtFiltreMesajFonksiyonuKaydet

  • Parametler: string : functionId , işlevi : func
  • Açıklama: functionId tarafından tanımlanan bir filtre işlevini sohbete kaydeder.Mesajdaki herhangi bir değişiklik kalıcı olacak ve mesaj diğer tüm filtre işlevlerinden geçtiğinde görüntülenecek.Bu işlev hoparlöradı, mesaj nesnesi ve mesajın kaynağı olan kanal geçer.
  • Geri dönüşler: void
  • Örnek:

-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
-- Bu örnek bir anahtar kelime filtreler ve başarılıysa, mesajın sohbetRenkini ayarlar
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- yeşil
local function doFilter(speaker, messageObject, channelName)
-- Mesajın anahtar kelime içerdiğini kontrol et
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Mesajdan anahtar mesajkaldır (filtre), ayrıca ChatColor'u ayarlayın
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
ChatService:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

KayıtsızFiltreMesajFonksiyonuKaldır

  • Parametler: string : functionId
  • Açıklama: Bir filtre işlevini (RegisterFilterMessageFunction tarafından kaydedilmiş) tanımlayıcısına göre kaydedilmez, functionId .
  • Geri dönüşler: void

Kayıt Süreç Komutları İşlevi

  • Parametler: string : functionId , işlevi : func
  • Açıklama: Bir süreç komutu işlevini sohbete functionId kaydedilir.Bir mesaj filtrelenmeden önce, func (ve bu tarafından kaydedilen diğer işlevler) aracılığıyla geçecektir.Fonksiyon func mesajın bir komut çağırdığını kontrol etmelidir.Eğer öyleyse, komutun eylemini gerçekleştirin ve gerçek döndürün.Gerçek döndürmek, mesajın aslında bir komut olduğunu ve görüntülenmemesi gerektiğini gösterir.İşlev UnregisterProcess Komut Dosya Fonksiyonu kullanılarak kayıtsız bırakılabilir.
  • Geri dönüşler: void
  • Örnek:

-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Pepperoni pizza dilimi teçhizat
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

Kayıt Olmayan İşlem Komutları İşlevi

  • Parametler: string : functionId
  • Açıklama: Bir komut işlemcisini kaydettirmez (Kayıt Etme Komutları İşlevi tarafından kaydedilmiş) tanımlayıcıya göre, functionId .
  • Geri dönüşler: void

Etkinlikler

KanalEklendi

  • Parametler: string : channelName
  • Açıklama: Bir sohbete bir kanal eklenildiğinde ateş eder.

KanalKaldırıldı

  • Parametler: string : channelName
  • Açıklama: Bir kanal sohbenden kaldırıldığında ateş eder.

KonuşmacıEklendi

  • Parametler: string : speakerName
  • Açıklama: Bir konuşmacı sohbete eklenirse ateş eder.

KonuşmacıKaldırıldı

  • Parametler: string : speakerName
  • Açıklama: Bir konuşmacı sohbetten kaldırıldığında ateş eder.

Sohbet Hoparlörü

Bir Sohbet Konuşmacısı bir Sohbet Kanalı konuşabilen bir varlığın temsilidir.Oyuna otomatik olarak bağlanan her Player oyunla ilişkili bir ChatSpeaker'a sahiptir.Ekstra Sohbet Konuşmacıları, kullanıcılar olmayanlar için (örneğin duyurucular veya ipucu mesajları) ChatService:AddSpeaker() kullanarak inşa edilebilir.

Özellikler

Adı

  • Tür: string : Name
  • Açıklama: Bu hoparlöradı, çok sayıda diğer işlev çağrırken bu konuşmacıya referans verilirken kullanılır.

Yöntemler

Katılma Kanalı

  • Parametler: string : channelName
  • Açıklama: Konuşmacıyı verilen channelName
  • Geri dönüşler: void

LeaveChannel'ı bırak

  • Parametler: string : channelName
  • Açıklama: Konuşmacıyı verilen channelName ile kanaldan kaldırır
  • Geri dönüşler: void

GetChannelList alın

  • Parametler: Hiçbiri
  • Açıklama: Konuşmacının bulunduğu tüm kanalların isimleri listesini döndürür.
  • Geri dönüşler: array< string >

IsInChannel kanalı

  • Parametler: string : channelName
  • Açıklama: Konuşmacının verilen channelName ile kanalda olup olmadığını döndürür.
  • Geri dönüşler: bool

Mesaj söyle SayMessage

  • Parametler: string : message , sözlük< string : channelName , varyant> string , çeşit> extraData
  • Açıklama: Konuşmacının message söylemesine ve bunun yapılırken oluşturulan ChatMessage nesnesinin geri dönmesine neden olur.
  • Geri dönüşler: Sohbet Mesajı

Mesaj gönder

  • Parametler: : , : , : , :
  • Açıklama: Verilen ChatSpeaker adıyla bir mesaj gönderir.kanalböyle bir hoparlör yoksa, bu yöntem bir uyarı oluşturur ve hoparlör mesajı görmez.
  • Geri dönüşler: void

GönderSistemMesajı

  • Parametler: string : message , string : channelName
  • Açıklama: Sistem mesajını ChatChannel 'a verilen channelName ile gönderir.Konuşmacı kanalda değilse, bu mesaj bir uyarı oluşturur ve kanaldaki diğer konuşmacılar mesajı görmez.
  • Geri dönüşler: void

Oyuncu Alın

  • Parametler: Hiçbiri
  • Açıklama: hoparlörilişkili Player nesneyi döndürür.Konuşmacı bir kullanıcı (bot) için değilse, bu nil döndürür.
  • Geri dönüşler: Player veya nil

SetExtraData'yı ayarla

  • Parametler: string : key , Varyant data
  • Açıklama: Belirli bir keyKonuşmacı bir Sohbet Mesajı gönderdiğinde, bu ekstra veri mesaja açıkça verilmediğinde mesaja eklenir.Örneğin, hoparlörsohbet renginin ayarlanmasına izin verir.
  • Geri dönüşler: void

EkstraVeriAl GetExtraData

  • Parametler: string : key
  • Açıklama: Verilen key ile ilişkili ekstra verileri döndürür, SetExtraData kullanarak ayarlanır.
  • Geri dönüşler: Varyant

SetMainChannel'ı ayarla

  • Parametler: string : channelName
  • Açıklama: Konuşmacıyı verilen kanalda konuşmak için ayarlar. AnaKanalSet'i ateş eder.
  • Geri dönüşler: nil

Etkinlikler

Söylenen Mesaj

Alınan Mesaj

AlınanSistemMesajı

KanalKatıldı

  • Parametler: string : channelName , string : channelWelcomeMessage
  • Açıklama: Konuşmacı Sohbet Kanalına verilen ile katıldığında ateş edildi.

KanalSağda

  • Parametler: string : channelName
  • Açıklama: Konuşmacı, verilen ChatChannel ile ayrıldığında ateş edildi.

Sessiz

  • Parametler: string : channelName , string : reason = nil , int : duration = 0
  • Açıklama: Konuşmacı, verilen Sohbet Kanalı ile susturulduğunda ateş edildi (verildiğinde).Bir reason sağlanabilir veya sağlanmayabilir.

Sesi Açık

  • Parametler: string : channelName
  • Açıklama: Konuşmacı ChatChannel üzerinde verilen channelName ile susturulduğunda ateş edildi.

EkstraVeriGüncellendi

  • Parametler: string : key , Varyant data
  • Açıklama: hoparlörekstra verilerindeki anahtarın varsayılan değeri SetExtraData kullanılarak güncellendiğinde ateş edilir.

AnaKanalSeti

  • Parametler: string : channelName
  • Açıklama: Konuşmacıların ana kanalı verilen ChatChannel ile değiştirildiğinde ateş edildi.

Sohbet Mesajı

Bir Sohbet Mesajı bir ChatSpeaker tarafından gönderilen bir mesajı temsil eden bir veri yapısıdır.Mesajın uzunluğu, mesajın Roblox tarafından filtrelenip filtrelenmediği ve mesajın görünümüyle ilgili ekstra veriler dahil olmak üzere mesajla ilgili verileri içerir.

Özellikler

ID

  • Tür: int
  • Açıklama: mesajiçin benzersiz bir sayı tanımlayıcı.

Konuşmacıdan

OrijinalKanal

Filtrelenmiş

  • Tür: bool
  • Açıklama: Mesajın Roblox tarafından filtrelenip filtrelenmediğini tanımlar (eğer doğruysa, Mesaj olacaktır nil )

Mesaj Uzunluğu

  • Tür: int
  • Açıklama: mesajuzunluğu. Mesaj filtrelenmişse bunu bir kriptografik dize oluşturmak için kullanabilirsiniz.

Mesaj

  • Tür: string : veya nil
  • Açıklama: mesajmetni. Bu özellik, IsFiltered doğruysa nil olacak.

Mesaj Türü

  • Tür: string:
  • Açıklama: mesajtürü. Bu türler ChatConstants modülünde açıklanır:
  • Olası değerler: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"

Süre

  • Tür: int
  • Açıklama: Bir zaman damgası; mesajın oluştuğu sırada os.time() değerinin.

EkstraVeri

  • Tür: sözlük< string , çeşit>
  • Açıklama: Bu mesaj için bir metadizin.Bu, mesajın görünümünü değiştirmek için kullanılır.Aşağıdaki anahtarlar mevcut olabilir:

Sohbet Kanalı

Sohbet Kanalı bir mesajın ChatSpeakers arasında değiştirilebileceği bir yol olan tek bir kanal hakkında veri depolayan bir nesnedir.Ayrıca, kullanıcıların kanala manuel olarak katılıp katılamayacağını belirleyen mesajların görünürlüğünü belirleyen erişim izni özelliklerine de sahiptir (/join veya /leave komutlarını kullanarak).

Varsayılan olarak, her kullanıcının "Herkes" ve "Sistem" sohbet kanallarına otomatik olarak eklenen bir Sohbet Konuşmacısı vardır (ancak, "Sistem" yalnızca okunur).Kullanıcı bir Player.Team üzerindeyse, sadece o Takım için bir kanala da erişebilirler.

Özellikler

Adı

  • Tür: string
  • Açıklama: kanaldiğer işlevlerde referans olarak kullanılan adı.

Hoşgeldiniz Mesajı

  • Tür: string
  • Açıklama: Bir kullanıcı kanala katıldığında görüntülenmesi gereken bir mesaj.

Katılabilir

  • Tür: bool
  • Açıklama: Bir kullanıcının /join komutunu kullanarak bir kanala manuel olarak katılabileceğini belirler.Bir kullanıcı, bu özellik yanlış olsa bile ChatSpeaker:JoinChannel() veya diğer yollarla bir kanala hala eklenebilir.

Bırakılabilir

  • Tür: bool
  • Açıklama: Bir kullanıcının /leave komutunu kullanarak bir kanaldan manuel olarak ayrılabileceğini belirler.Bir kullanıcı, bu özellik yanlış olsa bile bir kanaldan ChatSpeaker:LeaveChannel() veya diğer yollarla hala kaldırılabilir.

Otomatik Katılma

  • Tür: bool
  • Açıklama: Bir oyuncunun ChatSpeaker'ının oyuna katıldıktan sonra kanala otomatik olarak katılıp katılmayacağını belirler.Kullanıcı olmayan konuşmacılar, bu özellik doğru olsa bile, otomatik olarak kanallara katılmayacaktır (Bunu yapmak için ChatSpeaker:JoinChannel() kullanabilirsiniz).

Özel

  • Tür: bool
  • Açıklama: Kanalın ChatService:GetChannelList() tarafından döndürülen kanallar listesine dahil edilip edilmeyeceğini belirler.Bu, fısıltılı sohbetler ve takım sohbetleri için.

Yöntemler

KickSpeaker'ı

  • Parametler: string : speakerName , string : reason = nil
  • Açıklama: Verilen speakerName ile konuşmacıyı kanaldan kaldırır, kullanıcıya ve kullanıcının atıldığı kanaldan mesaj gönderir.Bir reason sağlanırsa, neden mesaja dahil edilecektir.
  • Geri dönüşler: void

Sessiz Hoparlör

  • Parametler: string : speakerName , string : reason = nil , intduration = 0
  • Açıklama: Konuşmacıyı, verilen speakerName saniye süreyle kanalda sessizleştirir.Eğer duration``nil veya 0 ise, sessizlik süresizdir.Eğer reason sağlanırsa, sebebi içeren bir mesaj kanala gönderilecektir.
  • Geri dönüşler: void

Sesi Açma Konuşmacı

  • Parametler: string : speakerName
  • Açıklama: kanalverilen speakerName ile konuşmacıyı aktifleştirir.
  • Geri dönüşler: void

IsSpeakerMuted konuşmacı kapalı

  • Parametler: string : speakerName
  • Açıklama: Verilen speakerName konuşmacının şu anda kanalda susturulup susturulmadığını tanımlar.
  • Geri dönüşler: bool

GetSpeakerList alın

  • Parametler: Hiçbiri
  • Açıklama: Şu anda kanalda bulunan ChatSpeaker adlarının hepsini içeren bir liste döndürür.
  • Geri dönüşler: array< string >

GönderSistemMesajı

  • Parametler: string : message
  • Açıklama: "Sistem" ChatSpeaker kanalına bir mesaj gönderir.
  • Geri dönüşler: void

KayıtFiltreMesajFonksiyonuKaydet

  • Parametler: string : functionId , işlevfunc
  • Açıklama: Bir filtre işlevi kaydedilir, func , kanala tarafından tanımlanan ile tanımlanır functionId .Filtre işlevi ile ChatSpeaker, ChatMessage ve string: mesajın kaynağı olan kanalın adı çağrılacaktır.Mesaja yapılan değişiklikler kalıcı olacak ve filtrelemeden sonra görüntülenecek.
  • Geri dönüşler: void
  • Örnek:

-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- Pepperoni pizza dilimi teçhizat
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

KayıtsızFiltreMesajFonksiyonuKaldır

  • Parametler: string : functionId
  • Açıklama: Bir filtre işlevini (RegisterFilterMessageFunction tarafından kaydedilmiş) tanımlayıcısına göre kaydedilmez, functionId .
  • Geri dönüşler: void

Kayıt Süreç Komutları İşlevi

  • Parametler: string : functionId , işlevfunc
  • Açıklama: Bir süreç komutu işlevi kaydedilir, func , sohbete tarafından tanımlanan functionId , ile.Bir mesaj filtrelenmeden önce, func (ve bu tarafından kaydedilen diğer işlevler) aracılığıyla geçecektir.Fonksiyon func mesajın bir komut çağırdığını kontrol etmelidir.Eğer öyleyse, komutun eylemini gerçekleştirin ve gerçek döndürün.Gerçek döndürmek, mesajın aslında bir komut olduğunu ve görüntülenmemesi gerektiğini gösterir.İşlev UnregisterProcess Komut Dosya Fonksiyonu kullanılarak kayıtsız bırakılabilir.
  • Geri dönüşler: void
  • Örnek:

-- Bu örneği ChatModule dizinindeki bir ModülScript'e yapıştırın.
-- Bu örnek bir anahtar kelime filtreler ve başarılıysa, mesajın sohbetRenkini ayarlar
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- yeşil
local function doFilter(speaker, messageObject, channelName)
-- Mesajın anahtar kelime içerdiğini kontrol et
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- Mesajdan anahtar mesajkaldır (filtre), ayrıca ChatColor'u ayarlayın
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- Bir kanal oluştur ve filtre işlevini kaydet
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule

Kayıt Olmayan İşlem Komutları İşlevi

  • Parametler: string : functionId
  • Açıklama: Kimliği verilen bir komut işlemcisini kaydettirmez (RegisterProcessCommandsFunction tarafından kaydedilmiştir), functionId .
  • Geri dönüşler: void

Etkinlikler

MesajYayınlandı

  • Parametler: Sohbet Mesajı : message
  • Açıklama: Bir mesaj kanala yayınlandığında ateş eder.

KonuşmacıKatıldı

  • Parametler: string : speakerName
  • Açıklama: Bir ChatSpeaker kanala katıldığında ateş eder.

KonuşmacıSol

  • Parametler: string : speakerName
  • Açıklama: Bir ChatSpeaker kanaldan ayrıldığında ateş eder.

KonuşmacıSusturuldu

  • Parametler: string : speakerName , string : reason , intduration = 0
  • Açıklama: Bir ChatSpeaker kanala kapatıldığında ateş eder.

KonuşmacıSesiKapalı

  • Parametler: string : speakerName
  • Açıklama: Bir ChatSpeaker susturulduğunda ateş eder.