TextChatService
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
บริการจัดการการแชทข้อความในประสบการณ์รวมถึง managing channels , ตกแต่งข้อความ, การกรองข้อความ, creating commands , และ พัฒนาอินเทอร์เฟซแชทที่กำหนดเอง .
เพื่อเรียนรู้เพิ่มเติมดู การดูภาพรวมของ TextChatService
สำหรับการปรับแต่งเพิ่มเติม TextChatService มีบุตรโสดต่อไปนี้:
สรุป
คุณสมบัติ
กำหนดว่าการแปลแชทจะเปิดใช้งานหรือไม่
กำหนดว่าจะเปิดใช้งานเต็มรูปแบบ TextChatService หรือกลับไปใช้ระบบแชทรุ่นเก่า
กำหนดว่า TextChatService ควรสร้างค่าเริ่มต้น TextChatCommands หรือไม่
กำหนดว่า TextChatService ควรสร้างค่าเริ่มต้น TextChannels หรือไม่
วิธีการ
แสดงฟองข้อความบนส่วนหรือตัวละครผู้เล่นที่ให้ไว้
กำหนดว่าผู้ใช้มีสิทธิ์ในการแชทในประสบการณ์หรือไม่
กำหนดว่าผู้ใช้สองคนจะได้รับข้อความระหว่างกันหรือไม่
กำหนดว่าผู้ใช้มีสิทธิ์ในการแชทโดยตรงกับผู้ใช้รายอื่นในประสบการณ์ตามปัจจัยเช่นการตั้งค่าการควบคุมของพ่อแม่
อีเวนต์
จะเกิดไฟไหม้เมื่อ TextChatService:DisplayBubble() ถูกเรียก
จะเกิดไฟไหม้เมื่อ TextChannel:DisplaySystemMessage() ถูกเรียกใช้บนไคลเอนต์ หรือเมื่อไคลเอนต์ได้รับการตอบสนองที่ถูกต้อง TextChannel:SendAsync() จากเซิร์ฟเวอร์
จะเกิดไฟไหม้เมื่อ TextChannel:SendAsync() ถูกเรียกโดยไคลเอนต์ส่ง
Callbacks
เรียกเมื่อบับเบิ้ลแชทกำลังจะแสดงขึ้น
เรียกเมื่อข้อความใหม่กำลังจะแสดงในหน้าต่างแชท สิ่งนี้สามารถดำเนินการได้เฉพาะในไคลเอนต์เท่านั้น
เรียกเมื่อ TextChatService ได้รับข้อความที่เข้ามา
คุณสมบัติ
ChatTranslationEnabled
กำหนดว่าการแปลแชทจะเปิดใช้งานหรือไม่ถ้าเป็นจริง ข้อความระบบจะแจ้งผู้เล่นเมื่อพวกเขาเข้าร่วมครั้งแรกที่ข้อความแชทอาจถูกแปลเป็นภาษาที่ผู้เล่นต้องการ
ChatVersion
กำหนดว่าจะเปิดใช้งานเต็มรูปแบบ TextChatService หรือกลับไปใช้ระบบแชทรุ่นเก่าการตั้งค่าคุณสมบัตินี้เป็น Enum.ChatVersion.LegacyChatService จะปิดใช้งาน TextChatService ได้อย่างมีประสิทธิภาพ
CreateDefaultCommands
กำหนดว่า TextChatService ควรสร้างค่าเริ่มต้น TextChatCommands หรือไม่
หากเป็นจริงต่อไปนี้ TextChatCommands จะถูกสร้างขึ้นและใส่ใน Folder ชื่อ TextChatCommands ภายใน TextChatService :
<th>อีเอเลียสหลัก</th><th>อีเอเลียสรอง</th><th>คําอธิบาย</th><th>ตัวอย่างการใช้งาน</th></tr></thead><tbody><tr><td><b>คําสั่ง RBXClear</b></td><td>ล้างข้อมูล</td><td>cls</td><td>ล้างบันทึกการแชทสำหรับผู้ใช้ท้องถิ่น</td><td><code>/cls</code></td></tr><tr><td><b>RBXConsoleCommand</b></td><td>คอนโซล</td><td /><td>เปิดคอนโซลนักพัฒนา</td><td><code>/console</code></td></tr><tr><td><b>คำสั่งอีโมท RBX</b></td><td>ท่าทาง</td><td>e</td><td>ท่าทาง</td><td><code>/e เต้นรำ</code></td></tr><tr><td><b>คำสั่งช่วยเหลือ RBX</b></td><td>ช่วยเหลือ</td><td>?</td><td>แสดงรายการคําสั่งแชท</td><td><code>/ช่วยเหลือ</code></td></tr><tr><td><b>คําสั่ง RBXMute</b></td><td>ปิดเสียง</td><td>m</td><td>ปิดการใช้งานผู้ใช้โดย <code>Class.Player.Name|Name</code> หรือ <code>Class.Player.DisplayName|DisplayName</code> ในทุก <code>Class.TextChannel|TextChannels</code></td><td><code>/m ชื่อผู้ใช้</code></td></tr><tr><td><b>คําสั่งทีม RBX</b></td><td>ทีม</td><td>t</td><td>เข้าสู่โหมดแชททีมที่ข้อความจะปรากฏให้เพื่อนร่วมทีมเท่านั้น</td><td><code>/t</code></td></tr><tr><td><b>คําสั่งปิดเสียง RBXUnmute</b></td><td>ปิดเสียง</td><td>um</td><td>ปิดการปิดเสียงผู้ใช้โดย <code>Class.Player.Name|Name</code> หรือ <code>Class.Player.DisplayName|DisplayName</code> ในทั้งหมด <code>Class.TextChannel|TextChannels</code></td><td><code>ชื่อผู้ใช้ /um</code></td></tr><tr><td><b>คําสั่ง RBXVersion</b></td><td>รุ่น</td><td>v</td><td>แสดงรุ่นแชท</td><td><code>/เวอร์ชัน</code></td></tr><tr><td><b>คำสั่ง RBXWhisper</b></td><td>แชทส่วนตัว</td><td>w</td><td>เข้าสู่โหมดการกระซิบด้วยคลาส <code>Class.Player</code> อื่น</td><td><code>/w DisplayName</code> หรือ <code>/w @Username</code></td></tr></tbody>
ชื่อ |
---|
โปรดทราบว่าคุณสามารถแก้ไข สร้าง และลบ TextChatCommands แม้ว่า CreateDefaultCommands จะเป็นจริง โปรดทราบว่าคำสั่งปิดเสียงและเปิดเสียงใช้กับทั้งหมด TextChannels
CreateDefaultTextChannels
กำหนดว่า TextChatService ควรสร้างค่าเริ่มต้น TextChannels หรือไม่หากเป็นจริง Folder ที่ชื่อว่า ช่องข้อความ จะถูกสร้างขึ้นภายใน TextChatService ในระหว่างการรันไทม์เพื่อให้มี TextChannels ที่ระบุไว้ในตารางด้านล่างแต่ละช่องเริ่มต้นมีพฤติกรรมพิเศษที่อธิบายไว้ที่ใช้กับข้อความโดยใช้ฟังก์ชันการโทรกลับภายในที่ผูกไว้ TextChannel.OnIncomingMessage เปลี่ยนวิธีที่ข้อความปรากฏเมื่อส่งผ่านช่องการเรียกคืนจะถูกกำหนดโดยอัตโนมัติทั้งในระหว่างการทำงาน (ถ้า TextChannel มีอยู่) หรือเมื่อสร้าง TextChannel ขึ้น
<th>คําอธิบาย</th></tr></thead><tbody><tr><td><b>RBXทั่วไป</b></td><td><code>Class.TextChannel</code> สำหรับข้อความของผู้เล่นในหน้าต่างแชทข้อความจะถูกแก้ไขเพื่อให้ Class.TextChatMessage.PrefixText|PrefixText ได้รับแท็กสีฟอนต์ข้อความที่มีรายละเอียดเพื่อให้ผู้เล่นแชทได้รับสีชื่อที่โดดเด่นหากมี <code>Class.Player.Team</code> อยู่แล้ว คลาส <code>Class.Team.TeamColor</code> จะถูกใช้แทนสีชื่อเริ่มต้น</td></tr><tr><td><b>ระบบ RBX</b></td><td><code>Class.TextChannel</code> สำหรับข้อความระบบในหน้าต่างแชทข้อความจะได้รับการแก้ไขให้เป็นสีเทาอ่อนโดยค่าเริ่มต้นหรือสีแดงโดยค่าเริ่มต้นหาก Class.TextChatMessage.Metadata มีคำว่า "Error"</td></tr><tr><td><b>ทีม RBX[สีอิฐ]</b></td><td><code>Class.TextChannel</code> สำหรับข้อความผู้เล่นทีมเฉพาะ สร้างเมื่อ <code>Class.Team.TeamColor|TeamColor</code> ใช้งานโดย <code>Class.Team</code> ภายในบริการ <code>Class.Teams</code>ชื่อช่องที่สร้างขึ้นคือ <b>RBXTeam</b> ตามด้วยชื่อ <code>Class.Team.TeamColor|TeamColor</code>ตัวอย่างเช่น RBXTeamCrimson เป็น Class.TextChannel ที่สร้างขึ้นเมื่อมีทีมที่ใช้งานอยู่ซึ่ง Class.Team.TeamColor|TeamColor คุณสมบัติเป็น "Crimson" Datatype.BrickColor ในหน้าต่างแชท ข้อความจะได้รับการแก้ไขให้เป็นสีตาม Class.TextChatMessage.PrefixText|PrefixText และถูกเพิ่มด้วย [ทีม] ช่องทีมสร้าง Class.TextSource|Textources สำหรับผู้เล่นทั้งหมดที่ไม่ใช่ Class.Player.Neutral|Neutral ที่มีคุณสมบัติตรงกับ Class.Team.TeamColor|TeamColor ซึ่งทำให้พวกเขาสามารถใช้งานแชททีมได้ช่องจะถูกลบออกหากไม่มีทีมที่เหลืออยู่ที่มีคลาส <code>Class.Team.TeamColor|TeamColor</code> ที่เกี่ยวข้อง</td></tr><tr><td><b>RBXWhisper:[Username1]_[Username2]</b></td><td><code>Class.TextChannel</code> สําหรับข้อความกระซิบระหว่างสองผู้เล่นที่สร้างขึ้นเมื่อผู้เล่นใช้คําสั่ง <code>/whisper</code> กับผู้เล่นอีกคนตัวอย่างเช่น <b>RBXWhisper:2276836_505306092</b> เป็น <code>Class.TextChannel</code> สำหรับผู้เล่นที่มี <code>Class.Player.UserId|UserIds</code><b>2276836</b> และ <b>505306092</b>ภายในช่องกระซิบมีสอง Class.TextSource|Textources ที่เกี่ยวข้องกับ Class.Player.UserId|UserIds ที่เกี่ยวข้องกับแต่ละ Class.TextChatMessage.PrefixText ในหน้าต่างแชทข้อความจะมีสีเดียวกับข้อความที่มีอยู่ใน RBXGeneral และ Class.TextChatMessage.PrefixText จะได้รับการแก้ไขเพื่อแสดงว่าข้อความถูกส่งหรือได้รับจากผู้ใช้ท้องถิ่นหรือไม่Whisper ช่องจะถูกลบออกเมื่อผู้เล่นออกจากประสบการณ์</td></tr></tbody>
ช่อง |
---|
โปรดทราบว่าค่าเรียกกลับเริ่มต้น TextChannel.OnIncomingMessage สามารถเขียนทับได้โปรดทราบว่าคุณสามารถแก้ไข สร้าง และลบ TextChannels แม้ว่า CreateDefaultTextChannels จะเป็นจริงก็ตาม
ข้อความจากช่องข้อความที่แตกต่างกันสามารถแยกออกเป็นแท็บต่างๆในหน้าต่างแชทโดยใช้ ChannelTabsConfiguration
วิธีการ
DisplayBubble
แสดงฟองข้อความบนส่วนหรือตัวละครผู้เล่นที่ให้ไว้ และยิงเหตุการณ์ BubbleDisplayed ด้วยพารามิเตอร์ที่ระบุไว้ในวิธีนี้สามารถแสดงฟองอากาศสำหรับตัวละครที่ไม่ใช่ผู้เล่น (NPC) หากคุณระบุส่วนหนึ่งภายในตัวละคร เช่น หัวของมัน
โปรดทราบว่าวิธีนี้ใช้ได้เฉพาะใน LocalScript หรือใน Script ที่มี RunContext ของ Enum.RunContext.Client
พารามิเตอร์
ส่วนหรือตัวละครที่ฟองจะแสดงข้างบน
ข้อความที่จะแสดงในฟองแชท
ส่งค่ากลับ
CanUserChatAsync
กำหนดว่าผู้ใช้มีสิทธิ์ในการแชทในประสบการณ์หรือไม่ปัจจัยเช่นการตั้งค่าการควบคุมของผู้ปกครองอาจป้องกันไม่ให้ผู้ใช้ส่งข้อความข้อผิดพลาดหากรหัสผู้ใช้ไม่อยู่ในเซิร์ฟเวอร์ปัจจุบันโปรดทราบว่าวิธีนี้สามารถใช้กับผู้เล่นปัจจุบันทั้งหมด UserIds ใน Script ด้วย RunContext ของ Enum.RunContext.Server หรือ Enum.RunContext.Legacy .วิธีนี้ยังสามารถใช้ใน LocalScript แต่เฉพาะกับ UserId ของผู้เล่นท้องถิ่นเท่านั้น
พารามิเตอร์
ส่งค่ากลับ
CanUsersChatAsync
กำหนดว่าผู้ใช้สองคนจะได้รับข้อความระหว่างกันหรือไม่ปัจจัยเช่นการตั้งค่าการควบคุมผู้ปกครองที่ไม่สอดคล้องหรือสถานะถูกบล็อกอาจป้องกันการส่งข้อความระหว่างผู้ใช้ TextChannels ใช้ผลลัพธ์นี้ภายในเพื่อตรวจสอบว่าจะส่งข้อความระหว่างผู้ใช้หรือไม่โปรดทราบว่าวิธีนี้ใช้ได้เฉพาะใน Script กับ RunContext ของ Enum.RunContext.Server หรือ Enum.RunContext.Legacy เท่านั้น
พารามิเตอร์
ส่งค่ากลับ
CanUsersDirectChatAsync
กำหนดว่าผู้ใช้มีสิทธิ์ในการแชทโดยตรงกับผู้ใช้รายอื่นในประสบการณ์ตามการตั้งค่าการควบคุมของพ่อแม่ของพวกเขา จะใช้เมื่อ:
- สายการสื่อสารเป็นการเริ่มการสื่อสารจากผู้ใช้ (ไม่ใช่การเริ่มการสื่อสารจากนักพัฒนาหรือเกม)
- การเข้าถึงการสื่อสารถูกปิดและจำกัด
ตัวอย่างของการแชทโดยตรงคือช่องกระซิบระหว่างสองผู้ใช้
ผลการค้นหา
เมื่อสร้าง TextChannel สำหรับการแชทโดยตรงใช้ TextChannel:SetDirectChatRequester() เพื่อตั้งค่า requesterUserId เพื่อให้ช่องสามารถกำหนดได้ว่าจะส่งข้อความระหว่างผู้ใช้หรือไม่เมื่อ TextChannel.DirectChatRequester ไม่ใช่ null TextChannels ใช้ผลลัพธ์นี้ภายในเพื่อตรวจสอบว่าจะส่งข้อความระหว่างผู้ใช้หรือไม่
local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })if #whoCanDirectChat > 0 then-- ผู้ร้องขอ URI สามารถสนทนากับ iPad1, iPad2 หรือทั้งสองได้else-- ผู้ขอใช้งานไม่สามารถสนทนาโดยตรงกับ userId1 หรือ userId2 ได้end
โปรดทราบว่าวิธีนี้ใช้ได้เฉพาะใน Script กับ RunContext ของ Enum.RunContext.Server หรือ Enum.RunContext.Legacy เท่านั้น
พารามิเตอร์
ผู้ใช้ที่จะได้เริ่มคำขอแชทโดยตรง หาก requesterUserId ไม่อยู่ในเซิร์ฟเวอร์ปัจจุบัน วิธีนี้จะผิดพลาด
รายชื่อผู้ใช้ที่ผู้ขอใช้งาน userId ต้องการแชทโดยตรง ผู้ใช้ที่ไม่อยู่ในเซิร์ฟเวอร์ปัจจุบันจะถูกเพิกเฉย
ส่งค่ากลับ
รายชื่อผู้ใช้ที่สามารถมีส่วนร่วมในคำขอแชทโดยตรงหากไม่มีผู้ใช้รายใดสามารถสนทนากับผู้ร้องขอได้โดยใช้ requesterUserId ผลลัพธ์คือเปล่าว่างเปล่า
ตัวอย่างโค้ด
This example checks if two users can chat, creates a new TextChannel, and adds them to it.
local TextChatService = game:GetService("TextChatService")
local directChatParticipants = TextChatService:CanUsersDirectChatAsync(userId1, { userId2 })
-- Check for eligible participants
if #directChatParticipants > 0 then
local directChannel = Instance.new("TextChannel")
directChannel.Parent = TextChatService
for _, participant in directChatParticipants do
directChannel:AddUserAsync(participant)
end
return directChannel
end
warn("Could not create TextChannel. Not enough eligible users.")
return nil
อีเวนต์
MessageReceived
เช่น TextChannel.MessageReceived , จะเกิดขึ้นเมื่อ TextChannel:DisplaySystemMessage() ถูกเรียกใช้บนไคลเอนต์หรือเมื่อไคลเอนต์ได้รับคำตอบ TextChannel:SendAsync() ที่ถูกต้องจากเซิร์ฟเวอร์อีเวนต์นี้จะถูกยิงเฉพาะในไคลเอนต์เท่านั้น
หากคุณสมบัติ TextChannel.ShouldDeliverCallback ของเซิร์ฟเวอร์ถูกผูกและส่งคืน false คลายเอนต์จะไม่ยิง TextChatService.MessageReceived
ใช้พารามิเตอร์ TextChatMessage เพื่อรับ TextSource และข้อความของข้อความ (ด้วย TextChatMessage.Text )
พารามิเตอร์ TextChatMessage เป็นผลลัพธ์สุดท้ายของฟังก์ชันใดๆ ที่ผูกกับ TextChatService.OnIncomingMessage หรือ TextChannel.OnIncomingMessage
พารามิเตอร์
ที่ได้รับ TextChatMessage .
SendingMessage
จะเกิดไฟไหม้เมื่อ TextChannel:SendAsync() ถูกเรียกโดยไคลเอนต์ส่งใช้สิ่งนี้เพื่ออนุญาตให้ข้อความชั่วคราวปรากฏให้กับผู้ใช้ในขณะรอคำตอบจากเซิร์ฟเวอร์ TextChannel:SendAsync()
พารามิเตอร์
The TextChatMessage จากการเรียก TextChannel:SendAsync()
Callbacks
OnBubbleAdded
เรียกเมื่อฟองการแชทกำลังจะแสดงขึ้น สิ่งนี้สามารถดำเนินการได้เฉพาะในไคลเอนต์เท่านั้น
ใช้สิ่งนี้เพื่อปรับแต่งข้อความแชทฟองสบู่แบบเฉพาะเจาะจงหากคอลเลกชันนี้ส่งกลับ BubbleChatMessageProperties คุณสมบัติเหล่านั้นจะถูกประยุกต์ใช้กับฟองอากาศที่เกี่ยวข้อง แทนที่คุณสมบัติ BubbleChatConfigurationหาก UICorner , UIGradient หรือ ImageLabel ได้รับการสืบทอดภายใต้ BubbleChatMessageProperties พวกเขาจะยกเลิกคู่แข่งที่กำหนดไว้ใน BubbleChatConfiguration ด้วย
หากข้อความแชทถูกส่งโดยผู้เล่น message.TextSource จะตรงกับผู้เล่นนั้น และ adornee จะเป็น nil
หากข้อความแชทถูกส่งผ่าน TextChatService:DisplayBubble() ข้อความ adornee จะเป็นข้อความ partOrCharacter ที่จัดให้ และ message.TextSource จะเป็น nil
เมื่อผูกกับไคลเอนต์ที่ส่งข้อความ คอลเลกชันนี้จะถูกเรียกใช้สองครั้ง: ครั้งแรกเมื่อข้อความถูกส่งและรับท้องถิ่นเป็นครั้งแรก จากนั้นอีกครั้งเมื่อไคลเอนต์ได้รับผลลัพธ์ของข้อความที่กรองจากเซิร์ฟเวอร์
พารามิเตอร์
ที่เข้ามา TextChatMessage ที่ได้รับ
ส่วนหรือตัวละครที่ข้อความแชทฟองอากาศถูกแนบมา
ส่งค่ากลับ
หาก BubbleChatMessageProperties ถูกส่งคืน คุณสมบัติของมันจะแทนที่คุณสมบัติของ BubbleChatConfiguration
OnChatWindowAdded
เรียกเมื่อข้อความใหม่กำลังจะแสดงในหน้าต่างแชท สิ่งนี้สามารถดำเนินการได้เฉพาะในไคลเอนต์เท่านั้น
ใช้สิ่งนี้เพื่อปรับแต่งข้อความแต่ละข้อที่ปรากฏในหน้าต่างแชทหากคอลเลกชันนี้ส่งกลับ ChatWindowMessageProperties คุณสมบัติเหล่านั้นจะถูกนำไปใช้กับข้อความที่เกี่ยวข้อง แทนที่คุณสมบัติ ChatWindowConfigurationหาก UIGradient ได้รับการสืบทอดภายใต้ ChatWindowMessageProperties มันจะยังทำลายคุณสมบัติ TextColor3 ที่กำหนดไว้ใน ChatWindowConfiguration ด้วย
เมื่อผูกกับไคลเอนต์ที่ส่งข้อความ คอลเลกชันนี้จะถูกเรียกใช้สองครั้ง: ครั้งแรกเมื่อข้อความถูกส่งและรับท้องถิ่นเป็นครั้งแรก จากนั้นอีกครั้งเมื่อไคลเอนต์ได้รับผลลัพธ์ของข้อความที่กรองจากเซิร์ฟเวอร์
พารามิเตอร์
ที่เข้ามา TextChatMessage ที่ได้รับ
ส่งค่ากลับ
หาก ChatWindowMessageProperties ถูกส่งคืน คุณสมบัติของมันจะแทนที่คุณสมบัติของ ChatWindowConfiguration
OnIncomingMessage
เรียกเมื่อ TextChatService ได้รับข้อความที่เข้ามา สามารถใช้งานได้เฉพาะในไคลเอนต์เท่านั้น
ใช้สิ่งนี้เพื่อตกแต่ง TextChatMessagesหากคอลเลกชันนี้ส่งกลับ TextChatMessageProperties คุณสมบัติเหล่านั้นจะรวมกับพารามิเตอร์ TextChatMessage เพื่อสร้างคุณสมบัติใหม่ TextChatMessage
เมื่อผูกกับไคลเอนต์ที่ส่งข้อความ คอลเลกชันนี้จะถูกเรียกใช้สองครั้ง ครั้งแรกเมื่อข้อความถูกส่งและรับในท้องถิ่นเป็นครั้งแรก และอีกครั้งเมื่อไคลเอนต์ได้รับผลลัพธ์ของข้อความที่กรองจากเซิร์ฟเวอร์
โปรดทราบว่าการโทรกลับนี้ TextChatService.OnIncomingMessage จะเริ่มทำงาน ก่อน การโทรกลับใดๆ TextChannel.OnIncomingMessage
ควรกำหนดเฉพาะครั้งเดียวในรหัสที่มาจากต้น การผูกหลายอย่างจะถูกแทนที่ซึ่งกันและกันในลักษณะที่ไม่สามารถกำหนดได้
พารามิเตอร์
ที่เข้ามา TextChatMessage ที่ได้รับ
ส่งค่ากลับ
หากกลับ TextChatMessageProperties คุณสมบัติเหล่านั้นจะรวมกับพารามิเตอร์ TextChatMessage เพื่อสร้าง TextChatMessage ใหม่ที่มีคุณสมบัติเหล่านั้น มิฉะนั้นหาก nil ถูกส่งกลับแล้วจะไม่มีการเปลี่ยนแปลง TextChatMessage