您可以使用以下聊天模块支持服务器端的聊天系统行为,包括:
- 聊天服务 : 单独的,可以管理所有其他聊天模块的模块。
- ChatSpeaker : 一个可以在聊天频道中创建消息的实体;每个 Player 将自动有一个聊天Speaker 和机器人可以通过创建聊天Speakers 聊天。
- 聊天消息 : 容器为内容发送到聊天频道的聊天Speaker;包含用于格式化消息或添加额外功能的命令的金属元素。
- 聊天频道 : 一个频道,ChatSpeakers可以在这里交换聊天消息;也用于团队聊天和悄悄聊天。
聊天服务
ChatService 是一个单独的对象,处理 Lua 聊天系统的服务器端行为,例如 ChatChannels 和 ChatSpeakers。
所有 ModuleScript 都位于 ChatModule 文件夹内都必须返回一个函数,该函数将被调用使用聊天服务的 singleton。
方法
添加频道
- 描述: 创建一个聊天频道对象,并将其返回。
- 返回: 聊天频道
移除频道
- 描述: 移除指定名称的频道
- 返回: 无
获取频道
- 描述: 返回给定名称,或 nil 如果它不存在。
- 返回: 聊天频道
添加扬声器
- 描述: 创建并添加一个发言人到聊天中使用指定的名称,然后返回。
- 返回: 聊天音响
移除扬声器
- 描述: 移除指定名称的聊天中的发言人。
- 返回: 无
获得扬声器
- 描述: 返回发射器,如果它不存在,或 nil 。
- 返回: 聊天音响
获取频道列表
- 参数: 无
- 描述: 返回聊天中所有非私人频道的名称列表。
- 返回: 阵列< string >
获取自动加入频道列表
- 参数: 无
- 描述: 返回设置为“真的”的聊天中所有频道的名称列表。
- 返回: 阵列< string >
注册过滤器消息函数
- 描述: 注册一个过滤器函数到聊天由 functionId 注册。 任何对话框通过所有其他过滤器函数时出现的更改都会持续并显示。 此函数通过发言麦克风的名称、聊天对象和频道聊天发生。 此函数通过 演讲 的名称、聊天对象和频道聊天发生。
- 返回: 无
- 示例:
-- 将此示例粘贴到ChatModule的ModuleScript内。
-- 此示例过滤一个关键字,并且如果成功,将设置聊天字体颜色的消信息
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- 绿色
local function doFilter(speaker, messageObject, channelName)
-- 检查是否包含关键字
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- 从消信息中移除(过过滤器)关键字,还设置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
取消注册过滤器消息函数
- 描述: 注册过的过滤器函数(RegisterFilterMessageFunction)的身份证明, functionId .
- 返回: 无
注册过程命令函数
- 描述: 注册一个过程命令函数到聊天由 functionId 注册。 在消息被过滤之前,它将通过 func (和其他由此注册的函数) (和其他函数注册的函数)。 函数 0> func0>
- 返回: 无
- 示例:
-- 将此示例粘贴到ChatModule的ModuleScript内。
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- 意大利辣香肠切片装备
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
取消注册过程命令
- 返回: 无
事件
频道已添加
- 描述: 在聊天频道添加时发射。
频道已移除
- 描述: 会在频道被从聊天中移除时发射。
已添加扬声器
- 描述: 当发言人被添加到聊天时,它会发生。
已移除扬声器
- 描述: 当发生器移除从聊天室时,它会发生。
聊天语音
一个 聊天语音器 是代表一个实体在 聊天频道 中发表演讲的代表。每个 Player 连接到游戏自动有一个联系的聊天语音器。 为非用户(例如发布公告或提示消息)建造额外的聊天语音器也可以使用 2>ChatService:AddSpeaker()2> 。
属性
名称
- 描述: 该发言麦克风的名称,用于在调用许多其他函数时参考此发言人。
方法
加入频道
- 描述: 添加发射器到频道,使用 channelName 指定
- 返回: 无
离开频道
- 描述: 将音响从频道中移除,并且使用 channelName 提供
- 返回: 无
获取频道列表
- 参数: 无
- 描述: 返回播放器所在的所有频道的名称列表。
- 返回: 阵列< string >
是否在通道中
- 描述: 返回是否在给定的 channelName 中是否有发言人。
- 返回: 是否:
说话
- 参数: string : message , 0> Li字符串rary.string0> : 3> chanネーム3> , 典典< 6> Li字符串rary.string6> , 变体> 9> extraData 9>
- 返回: 聊天消息
发送消息
- 返回: 无
发送系统消息
- 返回: 无
获取玩家
- 参数: 无
- 描述: 返回与发言麦克风关联的 Player 对象。如果发言者不是用户 (一个机器人) ,那么这将返回 nil 。
- 返回: Player 或 nil
设置额外数据
- 描述: 为Speaker设置一些额外的数据,在特定 key 下。 每当Speaker发送一个 聊天消息 时,这些额外的数据都会附加在消息上,如果没有明确提供消信息。 例如,这允许Speaker的聊天颜色。
- 返回: 无
获取额外数据
- 描述: 返回与给定的 key 相关的额外数据,使用 SetExtraData 设置。
- 返回: 变体
设置主频道
- 描述: 将音响设置在指定的频道上。触发主频道设置。
- 返回: nil
事件
已说话
收到的消息
收到系统消息
已加入频道
左侧频道
已静音
- 参数: string : channelName , 0> Library.stri字符串g0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
未关闭
额外数据更新
- 描述: 在使用 SetExtraData 更新扬声麦克风的额外数据中更新时,发射。
主频道设置
聊天消息
聊天消息是一个数据结构,表示发送自聊天发言人的消息。它包含关于消信息的数据,包括文本长度、是否被Roblox过滤以及关于消信息外观的额外数据。
属性
身份证
- 类型: int
- 描述: 为消信息添加的独特数字标识。
从扬声器
- 类型: string :
- 描述: 发送消信息的 ChatSpeaker 的名称。
原始频道
- 类型: string :
- 描述: 聊天频道的名称,从 which the message originated.
是Filtered
- 类型: 是/否
- 描述: 描述是否被Roblox过滤(如果是,那么Message会成为 nil )
消息长度
- 类型: int
- 描述: 邮信息的长度。你可以用这个来生成一个哈希化字符串,如果邮件被过滤。
消息
- 描述: 文本是消信息的文本。如果 IsFiltered 是 true ,此属性将是 nil 。
消息类型
- 类型: string :
- 描述: 信息的类型。这些类型被描述在聊天量模块中:
- 可能的值: "Message" ,"System" ,0> "MeCommand"0> ,3> "Welcome"3> ,6> "SetCore"6> , 9> "Whisper" 9>
时间
额外数据
- 类型: 字典< string , 变体>
聊天频道
聊天频道 是一个存储数据的对象,其中包含关于单个频道的数据,这是在 聊天发言人 之间交换消息的方式。它还有访问权限属性,用于确定是否使用 /join 或 0> /离开0> 命令来交换消息。
默认情况下,每个用户都有一个 聊天音响 ,该音响会自动添加到“全部”和“系统”聊天频道(虽然“系统”是仅读取的)。 如果用户在 Player.Team 上,他们还将有 access to 一个仅对该 Team 的频道。
属性
名称
- 类型: string
- 描述: 通频道的名称,用于在其他功能中引用通道。
欢迎消息
- 类型: string
- 描述: 用户加入频道时显示的消息。
可加入
- 类型: 是/否
可离开
- 类型: 是/否
自动加入
- 类型: 是/否
私人
- 类型: 是/否
- 描述: 确定是否包含频道列表在 ChatService:GetChannelList() 返回的频道列表中。 这用于暗示聊天和团队聊天。
方法
踢出扬声器
- 描述: 移除发出的 speakerName 从频道,向用户和用户从哪个频道踢出的用户发送消息。如果提供了一个 reason ,理由将在消信息中包含。
- 返回: 无
静音发言人
- 参数: string : speakerName , 0> Library.strin字符串0> : 3> reason = null3> , 6> int6> , 9> duration = 0 9>
- 描述: 使用 speakerName 在频道上指定的持续时间为秒。如果 duration 为空或为 0 ,该 mute 无效。如果 0> reason0> 为频道提供了,则会发送消息到频道包含该理由。
- 返回: 无
关闭音响
- 描述: 用户在频道中输入了 speakerName 来解锁扬声器。
- 返回: 无
IsSpeaker已静音
- 描述: 描述是否有 speakerName 在通频道上当前为静音状态。
- 返回: 是否:
获取扬声器列表
- 参数: 无
- 描述: 返回包含当前频道中所有聊天发言人名称的列表。
- 返回: 阵列< string >
发送系统消息
- 描述: 从“系统” ChatSpeaker 发送消息到频道。
- 返回: 无
注册过滤器消息函数
- 描述: 注册一个过滤器函数,func ,由 functionId 指定的频道。过滤器函数将被调用使用 0>ChatSpeaker0> 、3>ChatMessage3> 和 6>Library.string 6> :代表频道的名称。更改对话
- 返回: 无
- 示例:
-- 将此示例粘贴到ChatModule的ModuleScript内。
local functionId = "getPizza"
local command = "/pizza"
local toolId = 22596452 -- 意大利辣香肠切片装备
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
取消注册过滤器消息函数
- 描述: 注册过的过滤器函数(RegisterFilterMessageFunction)的身份证明, functionId .
- 返回: 无
注册过程命令函数
- 描述: 注册一个过程命令函数,func ,由 functionId 到聊天。在消息被过滤之前,它将通过 0> func0> (和其他由此注册的函数) 来
- 返回: 无
- 示例:
-- 将此示例粘贴到ChatModule的ModuleScript内。
-- 此示例过滤一个关键字,并且如果成功,将设置聊天字体颜色的消信息
local functionId = "greenText"
local keyword = "#green"
local chatColor = Color3.new(0, 1, 0) -- 绿色
local function doFilter(speaker, messageObject, channelName)
-- 检查是否包含关键字
local start, finish = string.find(messageObject.Message, keyword)
if start and finish then
-- 从消信息中移除(过过滤器)关键字,还设置ChatColor
messageObject.Message = string.gsub(messageObject.Message, keyword, "")
messageObject.ExtraData.ChatColor = chatColor
end
end
local function runChatModule(ChatService)
-- 创建一个频道并注册过滤器功能
local testChannel = ChatService:AddChannel("TestChannel")
testChannel:RegisterFilterMessageFunction(functionId, doFilter)
end
return runChatModule
取消注册过程命令
- 描述: 取消注册过程命令处理器 (注册过程命令由RegisterProcessCommandsFunction 注册), functionId 。
- 返回: 无
事件
发布消息
- 描述: 在频道上发布消息时会发射。
已加入的扬声器
- 描述: 会话开始时发射,当 ChatSpeaker 加入频道。
左侧扬声器
- 描述: 发射一个 聊天播放器 离开频道。
扬声器静音
- 描述: 在ChatSpeaker在频道上被消音时,它会发射。
未静音
- 描述: 发生在 ChatSpeaker 未被解锁时。