SuperAPI AI 工具集

roblox-text-chat

编程与开发

查看项目

更新于 10-15 21:37

技能介绍

本技能面向 Roblox 聊天与文本安全。核心规则:玩家间对话必须走 TextChatService 的 TextChannel(负责过滤、隐私/家长设置与举报),旧 Chat 服务及 ChatService Lua 模块已移除;任何一名玩家撰写并展示给他人的文本(宠物名、标语、公会名、交易备注、自定义 UI)都必须在服务端用 TextService:FilterStringAsync 过滤,之后从 DataStore 载入时需重新过滤;他人可见的可编辑文本(标语、公告板)限速至少 1 分钟;用 CanUserChatAsync/CanUsersChatAsync/CanUsersDirectChatAsync 尊重隐私设置,并对私聊频道调用 TextChannel:SetDirectChatRequester()。自己写的 UI 文本、游戏状态消息、管理员公告无需过滤。

过滤在服务端、玩家提交后执行,先限速与限长,失败时闭合处理(不显示或占位符),绝不显示原文;可存原文但展示时必须过滤。

TextChatService 要点:CreateDefaultTextChannels 生成 RBXGeneral 与 RBXSystem,CreateDefaultCommands 添加内置命令(/whisper、/team、/mute 等);外观由 ChatWindowConfiguration、ChatInputBarConfiguration、BubbleChatConfiguration 配置,也可禁用后自建 UI。流程:客户端 TextChannel:SendAsync → 服务端 ShouldDeliverCallback 逐接收者判断 → 过滤 → 客户端 OnIncomingMessage → 显示。回调不可 yield;ShouldDeliverCallback 仅服务端,OnIncomingMessage 仅客户端。系统消息用 channel:DisplaySystemMessage(text)(仅本地)。自定义频道在服务端创建 TextChannel 并用 channel:AddUserAsync(userId) 加成员,检查返回 TextSource 的 CanSend。

PolicyService 方面,服务端可用 PolicyService:GetPolicyInfoForPlayerAsync(player) 获取 ArePaidRandomItemsRestricted、IsPaidItemTradingAllowed、AreAdsAllowed、AllowedExternalLinkReferences、IsSubjectToChinaPolicies 等标志,用于按玩家限制开箱、交易、广告与外链。相关技能:roblox-security、roblox-ui、roblox-monetization、roblox-data-stores。