服务器端聊天模块

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

您可以使用以下聊天模块支持服务器端的聊天系统行为,包括:

  • 聊天服务 : 单独的,可以管理所有其他聊天模块的模块。
  • ChatSpeaker : 一个可以在聊天频道中创建消息的实体;每个 Player 将自动有一个聊天Speaker 和机器人可以通过创建聊天Speakers 聊天。
  • 聊天消息 : 容器为内容发送到聊天频道的聊天Speaker;包含用于格式化消息或添加额外功能的命令的金属元素。
  • 聊天频道 : 一个频道,ChatSpeakers可以在这里交换聊天消息;也用于团队聊天和悄悄聊天。

聊天服务

ChatService 是一个单独的对象,处理 Lua 聊天系统的服务器端行为,例如 ChatChannelsChatSpeakers

所有 ModuleScript 都位于 ChatModule 文件夹内都必须返回一个函数,该函数将被调用使用聊天服务的 singleton。

方法

添加频道

  • 参数: string : channelName
  • 描述: 创建一个聊天频道对象,并将其返回。
  • 返回: 聊天频道

移除频道

  • 参数: string : channelName
  • 描述: 移除指定名称的频道
  • 返回:

获取频道

  • 参数: string : channelName
  • 描述: 返回给定名称,或 nil 如果它不存在。
  • 返回: 聊天频道

添加扬声器

  • 参数: string : speakerName
  • 描述: 创建并添加一个发言人到聊天中使用指定的名称,然后返回。
  • 返回: 聊天音响

移除扬声器

  • 参数: string : speakerName
  • 描述: 移除指定名称的聊天中的发言人。
  • 返回:

获得扬声器

  • 参数: string : speakerName
  • 描述: 返回发射器,如果它不存在,或 nil 。
  • 返回: 聊天音响

获取频道列表

  • 参数:
  • 描述: 返回聊天中所有非私人频道的名称列表。
  • 返回: 阵列< string >

获取自动加入频道列表

  • 参数:
  • 描述: 返回设置为“真的”的聊天中所有频道的名称列表。
  • 返回: 阵列< string >

注册过滤器消息函数

  • 参数: string : functionId , 0> 函数0> : 3> func 3>
  • 描述: 注册一个过滤器函数到聊天由 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

取消注册过滤器消息函数

  • 参数: string : functionId
  • 描述: 注册过的过滤器函数(RegisterFilterMessageFunction)的身份证明, functionId .
  • 返回:

注册过程命令函数

  • 参数: string : functionId , 0> 函数0> : 3> func 3>
  • 描述: 注册一个过程命令函数到聊天由 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

取消注册过程命令

事件

频道已添加

  • 参数: string : channelName
  • 描述: 在聊天频道添加时发射。

频道已移除

  • 参数: string : channelName
  • 描述: 会在频道被从聊天中移除时发射。

已添加扬声器

  • 参数: string : speakerName
  • 描述: 当发言人被添加到聊天时,它会发生。

已移除扬声器

  • 参数: string : speakerName
  • 描述: 当发生器移除从聊天室时,它会发生。

聊天语音

一个 聊天语音器 是代表一个实体在 聊天频道 中发表演讲的代表。每个 Player 连接到游戏自动有一个联系的聊天语音器。 为非用户(例如发布公告或提示消息)建造额外的聊天语音器也可以使用 2>ChatService:AddSpeaker()2> 。

属性

名称

  • 类型: string : Name
  • 描述: 该发言麦克风的名称,用于在调用许多其他函数时参考此发言人。

方法

加入频道

  • 参数: string : channelName
  • 描述: 添加发射器到频道,使用 channelName 指定
  • 返回:

离开频道

  • 参数: string : channelName
  • 描述: 将音响从频道中移除,并且使用 channelName 提供
  • 返回:

获取频道列表

  • 参数:
  • 描述: 返回播放器所在的所有频道的名称列表。
  • 返回: 阵列< string >

是否在通道中

  • 参数: string : channelName
  • 描述: 返回是否在给定的 channelName 中是否有发言人。
  • 返回: 是否:

说话

  • 参数: string : message , 0> Li字符串rary.string0> : 3> chanネーム3> , 典典< 6> Li字符串rary.string6> , 变体> 9> extraData 9>
  • 描述: 会让发言者说 message 并返回创建此对象所创建的 ChatMessage 对象。
  • 返回: 聊天消息

发送消息

  • 参数: string : message ,0> Li字符串rary.string0> : 3> channe频道3> ,6> Library.strin字符串6> : 9> 从Speaker 9>
  • 描述:聊天发言人 发送一个名为 fromSpeaker 的消息。 如果没有此频道与者,此方法会创建警告,发言人将不会看到消信息。
  • 返回:

发送系统消息

  • 参数: string : message,0> Library.strin字符串0> : 3> channelName 3>
  • 描述:聊天频道 发送系统消息,包含给定的 channelName 。 如果发言人不在频道中,该消息将创建警告,其他发言人在频道中将不会看到消信息。
  • 返回:

获取玩家

  • 参数:
  • 描述: 返回与发言麦克风关联的 Player 对象。如果发言者不是用户 (一个机器人) ,那么这将返回 nil
  • 返回: Playernil

设置额外数据

  • 参数: string : key,变体0> data0>
  • 描述: 为Speaker设置一些额外的数据,在特定 key 下。 每当Speaker发送一个 聊天消息 时,这些额外的数据都会附加在消息上,如果没有明确提供消信息。 例如,这允许Speaker的聊天颜色。
  • 返回:

获取额外数据

  • 参数: string : key
  • 描述: 返回与给定的 key 相关的额外数据,使用 SetExtraData 设置。
  • 返回: 变体

设置主频道

  • 参数: string : channelName
  • 描述: 将音响设置在指定的频道上。触发主频道设置。
  • 返回: nil

事件

已说话

收到的消息

收到系统消息

已加入频道

  • 参数: string : channelName,0> Library.strin字符串0> : 3> channelWelcomeMessage 3>
  • 描述: 发射时,当发言人加入 ChatChannel 使用指定的 channelName

左侧频道

  • 参数: string : channelName
  • 描述: 发射器离开 ChatChannel 使用指定的 channelName

已静音

  • 参数: string : channelName , 0> Library.stri字符串g0> : 3> reason = nil3> , 6> int6> : 9> duration 9> = 0
  • 描述: 发射时,当发言者在 ChatChannel 上使用指定的 channelName 为期间提供给定的时间(如果提供)。可能或不可能提供 0> reason0>。

未关闭

  • 参数: string : channelName
  • 描述: 发射时,当发言人在聊天频道上与指定的channelName 发生了单次0>单次0>。

额外数据更新

  • 参数: string : key,变体0> data0>
  • 描述: 在使用 SetExtraData 更新扬声麦克风的额外数据中更新时,发射。

主频道设置

  • 参数: string : channelName
  • 描述: 发射时,主音频频道已更改为 聊天频道 使用指定的 channelName

聊天消息

聊天消息是一个数据结构,表示发送自聊天发言人的消息。它包含关于消信息的数据,包括文本长度、是否被Roblox过滤以及关于消信息外观的额外数据。

属性

身份证

  • 类型: int
  • 描述: 为消信息添加的独特数字标识。

从扬声器

原始频道

  • 类型: string :
  • 描述: 聊天频道的名称,从 which the message originated.

是Filtered

  • 类型: 是/否
  • 描述: 描述是否被Roblox过滤(如果是,那么Message会成为 nil )

消息长度

  • 类型: int
  • 描述: 邮信息的长度。你可以用这个来生成一个哈希化字符串,如果邮件被过滤。

消息

  • 类型: stringnil
  • 描述: 文本是消信息的文本。如果 IsFiltered 是 true ,此属性将是 nil

消息类型

  • 类型: string :
  • 描述: 信息的类型。这些类型被描述在聊天量模块中:
  • 可能的值: "Message""System" ,0> "MeCommand"0> ,3> "Welcome"3> ,6> "SetCore"6> , 9> "Whisper" 9>

时间

  • 类型: int
  • 描述: 时间戳;在消信息创作品时间的 os.time() 值。

额外数据

  • 类型: 字典< string , 变体>
  • 描述: 用于此信息的金属数据典。 这用于改变消信息的外观。 以下钥匙可能存在:

聊天频道

聊天频道 是一个存储数据的对象,其中包含关于单个频道的数据,这是在 聊天发言人 之间交换消息的方式。它还有访问权限属性,用于确定是否使用 /join 或 0> /离开0> 命令来交换消息。

默认情况下,每个用户都有一个 聊天音响 ,该音响会自动添加到“全部”和“系统”聊天频道(虽然“系统”是仅读取的)。 如果用户在 Player.Team 上,他们还将有 access to 一个仅对该 Team 的频道。

属性

名称

  • 类型: string
  • 描述: 通频道的名称,用于在其他功能中引用通道。

欢迎消息

  • 类型: string
  • 描述: 用户加入频道时显示的消息。

可加入

  • 类型: 是/否
  • 描述: 确定用户是否手动加入频道使用 /join 命令。 用户仍然可以通过使用 ChatSpeaker:JoinChannel() 或其他方式添加到频道,即使此属性是空的。

可离开

  • 类型: 是/否
  • 描述: 确定用户是否手动离开频道使用 /leave 命令。 用户仍然可以使用 ChatSpeaker:LeaveChannel() 或其他方式即使此属性是空的。

自动加入

  • 类型: 是/否
  • 描述: 确定玩家的 ChatSpeaker 是否在加入游戏时自动加入频道。非用户语音器不会在此属性是真的(您可以使用 ChatSpeaker:JoinChannel() 来执行此操作)。

私人

方法

踢出扬声器

  • 参数: string : speakerName , 0> Library.strin字符串0> : 3> reason = nil 3>
  • 描述: 移除发出的 speakerName 从频道,向用户和用户从哪个频道踢出的用户发送消息。如果提供了一个 reason ,理由将在消信息中包含。
  • 返回:

静音发言人

  • 参数: string : speakerName , 0> Library.strin字符串0> : 3> reason = null3> , 6> int6> , 9> duration = 0 9>
  • 描述: 使用 speakerName 在频道上指定的持续时间为秒。如果 duration 为空或为 0 ,该 mute 无效。如果 0> reason0> 为频道提供了,则会发送消息到频道包含该理由。
  • 返回:

关闭音响

  • 参数: string : speakerName
  • 描述: 用户在频道中输入了 speakerName 来解锁扬声器。
  • 返回:

IsSpeaker已静音

  • 参数: string : speakerName
  • 描述: 描述是否有 speakerName 在通频道上当前为静音状态。
  • 返回: 是否:

获取扬声器列表

  • 参数:
  • 描述: 返回包含当前频道中所有聊天发言人名称的列表。
  • 返回: 阵列< string >

发送系统消息

  • 参数: string : message
  • 描述: 从“系统” ChatSpeaker 发送消息到频道。
  • 返回:

注册过滤器消息函数

  • 参数: string : functionId , 0> 函数0> 3> func 3>
  • 描述: 注册一个过滤器函数,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

取消注册过滤器消息函数

  • 参数: string : functionId
  • 描述: 注册过的过滤器函数(RegisterFilterMessageFunction)的身份证明, functionId .
  • 返回:

注册过程命令函数

  • 参数: string : functionId , 0> 函数0> 3> func 3>
  • 描述: 注册一个过程命令函数,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

取消注册过程命令

  • 参数: string : functionId
  • 描述: 取消注册过程命令处理器 (注册过程命令由RegisterProcessCommandsFunction 注册), functionId
  • 返回:

事件

发布消息

  • 参数: 聊天消息 : message
  • 描述: 在频道上发布消息时会发射。

已加入的扬声器

  • 参数: string : speakerName
  • 描述: 会话开始时发射,当 ChatSpeaker 加入频道。

左侧扬声器

扬声器静音

  • 参数: string : speakerName , 0> Library.string0> : 3> reaso字符串3> , 6> int6> 9> duration = 0 9>
  • 描述:ChatSpeaker在频道上被消音时,它会发射。

未静音