서버 측 채팅 모듈

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

다음 채팅 모듈을 사용하여 레거시 채팅 시스템의 서버 측 동작을 지원할 수 있습니다. 여기에는 다음이 포함됩니다:

  • ChatService : 다른 모든 채팅 모듈을 관리하는 단일 인스턴스.
  • 채팅 스피커 : 채팅 채널에서 메시지를 생성할 수 있는 엔터티; 각 Player 는 자동으로 채팅 스피커를 갖게 되며 봇이 채팅 스피커를 생성하여 채팅할 수 있습니다.
  • ChatMessage : 채팅 스피커가 채팅 채널에 보내는 콘텐츠의 컨테이너; 메시지를 형식화하거나 명령에 추가 기능을 추가하는 데 사용되는 메타데이터를 포함합니다.
  • ChatChannel : ChatSpeaker가 ChatMessage를 교환할 수 있는 채널; 팀 채팅과 속삭임 채팅에도 사용됩니다.

채팅서비스

ChatService 는 Lua 채팅 시스템의 서버 측 동작, 예를 들어 ChatChannelsChatSpeakers를 처리하는 단일 개체입니다.

채팅 모듈 폴더 내의 모든 s는 함수를 반환해야 하며, 그 함수는 ChatService 싱글턴으로 호출됩니다.

방법

채널 추가

  • 매개변수: string : channelName
  • 설명: 지정된 이름으로 ChatChannel 개체를 만들고 반환합니다.

채널 제거

  • 매개변수: string : channelName
  • 설명: 지정된 이름의 채널 제거
  • 반환: 무효

채널 받기

  • 매개변수: string : channelName
  • 설명: 지정된 이름의 채널을 반환하거나 없으면 nil입니다.

스피커 추가

  • 매개변수: string : speakerName
  • 설명: 지정된 이름으로 채팅에 스피커를 생성하고 추가한 다음 반환합니다.
  • 반환: ChatSpeaker

스피커 제거

  • 매개변수: string : speakerName
  • 설명: 지정된 이름으로 채팅에서 스피커를 제거합니다.
  • 반환: 무효

Speaker 가져오기

  • 매개변수: string : speakerName
  • 설명: 주어진 이름의 스피커를 반환하거나 없으면 nil입니다.
  • 반환: ChatSpeaker

채널 목록 가져오기GetChannelList

  • 매개 변수: 없음
  • 설명: 채팅의 모든 비공개 채널 이름 목록을 반환합니다.
  • 반환: 배열< string >

자동 조인 채널 목록 받기

  • 매개 변수: 없음
  • 설명: 자동 참가 설정이 true로 설정된 채팅의 모든 채널 이름 목록을 반환합니다.
  • 반환: 배열< string >

등록필터메시지함수

  • 매개 변수: string : functionId , 함수 : func
  • 설명: 채팅을 식별하는 필터 함수를 등록합니다 functionId .메시지에 대한 모든 변경 사항은 유지되고 메시지가 다른 모든 필터 기능을 통과할 때 표시됩니다.이 함수는 스피커의 이름, 메시지 개체 및 메시지가 발생한 채널을 전달합니다.
  • 반환: 무효
  • 예제:

-- 채팅 모듈 폴더 내의 모듈스크립트에 이 예제를 붙여넣으세요.
-- 이 예제에서는 키워드를 필터링하고, 성공하면 메시지의 chatColor를 설정합니다
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 , 함수 : func
  • 설명: 프로세스 명령 함수를 functionId에 등록합니다.메시지가 필터링되기 전에, 그것은 func (및 이것에 의해 등록된 다른 함수)를 통과할 것입니다.함수 func 는 메시지가 명령을 호출하는지 확인해야 합니다.그렇다면 명령의 작업을 수행하고 진실을 반환합니다.진실을 반환하면 메시지가 실제로 명령이고 표시되지 않아야 함을 나타냅니다.UnregisterProcessCommandsFunction을 사용하여 함수를 등록 취소할 수 있습니다.
  • 반환: 무효
  • 예제:

-- 채팅 모듈 폴더 내의 모듈스크립트에 이 예제를 붙여넣으세요.
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
  • 설명: 식별자에 따라 명령 프로세서(RegisterProcessCommandsFunction에 의해 등록)를 등록 취소합니다(functionId).
  • 반환: 무효

이벤트

채널 추가됨

  • 매개변수: string : channelName
  • 설명: 채팅에 채널이 추가될 때 발생합니다.

채널 제거됨

  • 매개변수: string : channelName
  • 설명: 채팅에서 채널이 제거될 때 발생합니다.

스피커 추가

  • 매개변수: string : speakerName
  • 설명: 스피커가 채팅에 추가되면 발생합니다.

스피커 제거

  • 매개변수: string : speakerName
  • 설명: 스피커가 채팅에서 제거될 때 발생합니다.

채팅 스피커

A ChatSpeaker채팅채널에서 말할 수 있는 하나의 엔터티의 표현이다.게임에 자동으로 연결된 각 Player 연결된 채팅 스피커가 있습니다.추가 채팅 스피커는 ChatService:AddSpeaker()를 사용하여 비사용자(예: 발표자 또는 힌트 메시지)를 위해 생성될 수 있습니다.

속성

이름

  • 유형: string : Name
  • 설명: 다른 많은 함수를 호출하는 동안 이 스피커를 참조하는 데 사용되는 스피커의 이름.

방법

채널 가입JoinChannel

  • 매개변수: string : channelName
  • 설명: 지정된 channelName에 스피커를 채널에 추가합니다
  • 반환: 무효

채널 나가기 LeaveChannel

  • 매개변수: string : channelName
  • 설명: 지정된 channelName로 채널에서 스피커를 제거합니다
  • 반환: 무효

채널 목록 가져오기GetChannelList

  • 매개변수: 없음
  • 설명: 스피커가 있는 모든 채널의 이름 목록을 반환합니다.
  • 반환: 배열< string >

IsIn채널

  • 매개변수: string : channelName
  • 설명: 스피커가 지정된 channelName 채널에 있는지 여부를 반환합니다.
  • 반환: bool

메시지 말하기

메시지 전송

  • 매개 변수: : , : , : , :
  • 설명: 지정된 이름으로 ChatSpeaker에 메시지를 보냅니다.채널에 해당 스피커가 없으면 이 메서드가 경고를 생성하고 스피커는 메시지를 볼 수 없습니다.
  • 반환: 무효

시스템 메시지 전송

  • 매개 변수: : , : , :
  • 설명: 지정된 ChatChannel에 시스템 메시지를 보냅니다 channelName .스피커가 채널에 없으면 이 메시지가 경고를 생성하고 채널의 다른 스피커는 메시지를 볼 수 없습니다.
  • 반환: 무효

플레이어 가져오기

  • 매개변수: 없음
  • 설명: 스피커와 관련된 Player 개체를 반환합니다.스피커가 사용자(봇)가 아니면 이 반환됩니다 nil .
  • 반환: Player 또는 nil

설정된 추가 데이터

  • 매개변수: string : key , 변형 data
  • 설명: 특정 key 아래의 스피커에 대해 일부 추가 데이터를 설정합니다.스피커가 채팅 메시지를 보낼 때마다 이 추가 데이터는 메시지에 제공되지 않으면 메시지에 부착됩니다.예를 들어, 스피커의 채팅 색상을 설정할 수 있습니다.
  • 반환: 무효

추가 데이터 가져오기

  • 매개변수: string : key
  • 설명: 주어진 에 연결된 추가 데이터를 SetExtraData를 사용하여 반환합니다.
  • 반환: 변형

SetMainChannel

  • 매개변수: string : channelName
  • 설명: 스피커를 제공된 채널에서 말하도록 설정합니다. MainChannelSet을 발사합니다.
  • 반환: nil

이벤트

사이드 메시지

받은 메시지

시스템 메시지 수신 완료

  • 매개 변수: ChatMessagemessage , string : channelName
  • 설명: 스피커가 지정된 ChatMessage를 시스템에서 받을 때 발생합니다. ChatChannel에서 주어진 channelName와 함께.

채널 참여됨

  • 매개 변수: : , : , :
  • 설명: 스피커가 지정된 ChatChannel에 참여하면 발사됩니다. channelName .

채널Left

  • 매개변수: string : channelName
  • 설명: 스피커가 지정된 ChatChannel을 떠날 때 발사됩니다.

음소거

  • 매개 변수: string : channelName , string : reason = nil , int : duration = 0
  • 설명: 스피커가 ChatChannel에서 음소거되었을 때 지정된 channelName 기간(제공된 경우)에 발사됩니다.제공될 수 있거나 없을 수도 있는 reason가 있을 수 있습니다.

무음 해제

  • 매개변수: string : channelName
  • 설명: 발언자가 주어진 ChatChannel에서 음소거를 해제할 때 발생합니다. channelName .

업데이트된 추가 데이터

  • 매개변수: string : key , 변형 data
  • 설명: 스피커의 추가 데이터에 있는 키의 기본값이 SetExtraData를 사용하여 업데이트되면 발생합니다.

메인 채널 설정

  • 매개변수: string : channelName
  • 설명: 스피커의 주 채널이 지정된 ChatChannel으로 변경되면 발사됩니다.

채팅 메시지

A 채팅 메시지는 채팅 스피커에서 전송된 메시지를 나타내는 데이터 구조입니다.텍스트의 길이, Roblox에서 텍스트가 필터링되었는지, 메시지의 모습대한 추가 데이터를 포함하여 메시지에 대한 데이터가 포함되어 있습니다.

속성

ID

  • 유형: int
  • 설명: 메시지에 대한 고유한 숫자 식별자.

스피커에서

원래 채널

필터링되었습니다

  • 유형: bool
  • 설명: 메시지가 Roblox에 의해 필터링되는지 여부를 설명합니다(참여할 경우, 메시지는 nil 됩니다).

메시지 길이

  • 유형: int
  • 설명: 메시지의 길이. 메시지가 필터링된 경우 이를 사용하여 해시된 문자열을 생성할 수 있습니다.

메시지

  • 유형: string : 또는 nil
  • 설명: 메시지의 텍스트. 이 속성은 IsFiltered가 true인 경우 nil가 됩니다.

메시지 유형

  • 유형: string :
  • 설명: 메시지의 유형. 이러한 유형은 ChatConstants 모듈에서 설명됩니다.
  • 가능한 값: "Message" , "System" , "MeCommand" , "Welcome" , "SetCore" , "Whisper"

시간

  • 유형: int
  • 설명: 타임스탬프; 메시지가 작품시점의 os.time() 값.

추가 데이터

  • 유형: 사전< string , 변형>
  • 설명: 이 메시지의 메타데이터 사전.메시지의 모양을 변경하는 데 사용됩니다.다음 키가 있을 수 있습니다:

채팅 채널

ChatChannelChatSpeakers 간에 메시지를 교환할 수 있는 수단인 단일 채널에 대한 데이터를 저장하는 개체입니다.또한 사용자가 채널에 수동으로 참여하거나 나갈 수 있는지 여부를 결정하는 액세스 권한 속성도 있습니다( 또는 명령을 사용하여).

기본적으로 각 사용자에는 ChatSpeaker가 자동으로 추가되어 "모두" 및 "시스템" 채팅 채널에 게시되지만(비록 "시스템"은 읽기 전용이지만) "시스템"은 읽기 전용입니다.사용자가 Player.Team 있으면 해당 팀에만 액세스할 수 있는 채널에도 액세스할 수 있습니다.

속성

이름

  • 유형: string
  • 설명: 채널의 이름, 다른 함수에서 채널을 참조하는 데 사용됩니다.

환영 메시지

  • 유형: string
  • 설명: 사용자가 채널에 가입할 때 표시할 메시지.

가입 가능

  • 유형: bool
  • 설명: 사용자가 /join 명령을 사용하여 채널에 수동으로 참여할 수 있는지 여부를 결정합니다.이 속성이 false이더라도 ChatSpeaker:JoinChannel() 또는 다른 방법을 사용하여 채널에 사용자를 계속 추가할 수 있습니다.

남기기 가능

  • 유형: bool
  • 설명: 사용자가 /leave 명령을 사용하여 채널을 수동으로 떠날 수 있는지 여부를 결정합니다.이 속성이 false이더라도 ChatSpeaker:LeaveChannel() 또는 다른 방법을 사용하여 채널에서 사용자를 제거할 수 있습니다.

자동 참여

  • 유형: bool
  • 설명: 플레이어의 ChatSpeaker가 게임에 참여하면 채널에 자동으로 참여하는지 여부를 결정합니다.사용자가 아닌 스피커는 채널에 자동으로 참여하지 않으며, 이 속성이 true이더라도 ChatSpeaker:JoinChannel()을 사용하여 이를 수행할 수 있습니다.

개인

  • 유형: bool
  • 설명: 채널이 ChatService:GetChannelList()에서 반환된 채널 목록에 포함될지 여부를 결정합니다.이는 속삭임 채팅과 팀 채팅에 사용됩니다.

방법

킥스피커

  • 매개 변수: : , : , :
  • 설명: 지정된 speakerName 스피커를 채널에서 제거하여 사용자와 사용자가 킥된 채널 모두에 메시지를 전송합니다.reason가 제공되면 이유가 메시지에 포함됩니다.
  • 반환: 무효

무음 스피커

  • 매개 변수: string : speakerName , string : reason = nil , intduration = 0
  • 설명: 채널에서 지정된 speakerName에 따라 스피커를 일정 기간 동안 음소거합니다.if durationnil 또는 0이면, 음소거는 무기한입니다.reason 가 제공되면 이유가 포함된 채널에 메시지가 전송됩니다.
  • 반환: 무효

스피커 음소거 해제

  • 매개변수: string : speakerName
  • 설명: 채널에서 지정된 speakerName로 스피커를 음소거합니다.
  • 반환: 무효

스피커 음소거 IsSpeakerMuted

  • 매개변수: string : speakerName
  • 설명: 주어진 speakerName 스피커가 채널에서 현재 음소거되었는지 여부를 설명합니다.
  • 반환: bool

스피커 목록 가져오기GetSpeakerList

  • 매개변수: 없음
  • 설명: 현재 채널에 있는 ChatSpeaker의 모든 이름을 포함하는 목록을 반환합니다.
  • 반환: 배열< string >

시스템 메시지 전송

  • 매개변수: string : message
  • 설명: "시스템" ChatSpeaker에서 채널에 메시지를 보냅니다.
  • 반환: 무효

등록필터메시지함수

  • 매개변수: string : functionId , 기능func
  • 설명: 필터 함수를 등록합니다, func 채널에 의해 식별되는, functionId 를 채널에 등록합니다.필터 함수는 ChatSpeaker, ChatMessage, 그리고 string: 메시지가 발생한 채널의 이름으로 호출됩니다.메시지의 변경 사항은 지속되며 필터링 후 표시됩니다.
  • 반환: 무효
  • 예제:

-- 채팅 모듈 폴더 내의 모듈스크립트에 이 예제를 붙여넣으세요.
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 , 기능func
  • 설명: 프로세스 명령 함수를 등록합니다, func 채팅에서 식별되는, functionId 에 의해 식별됩니다.메시지가 필터링되기 전에, 그것은 func (및 이것에 의해 등록된 다른 기능)을 통과할 것입니다.함수 func 는 메시지가 명령을 호출하는지 확인해야 합니다.그렇다면 명령의 작업을 수행하고 진실을 반환합니다.진실을 반환하면 메시지가 실제로 명령이고 표시되지 않아야 함을 나타냅니다.UnregisterProcessCommandsFunction을 사용하여 함수를 등록 취소할 수 있습니다.
  • 반환: 무효
  • 예제:

-- 채팅 모듈 폴더 내의 모듈스크립트에 이 예제를 붙여넣으세요.
-- 이 예제에서는 키워드를 필터링하고, 성공하면 메시지의 chatColor를 설정합니다
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).
  • 반환: 무효

이벤트

메시지 게시됨

  • 매개변수: ChatMessage : message
  • 설명: 채널에 메시지가 게시될 때 발생합니다.

스피커 참여

  • 매개변수: string : speakerName
  • 설명: 채널에 ChatSpeaker가 참여할 때 발생합니다.

스피커Left

  • 매개변수: string : speakerName
  • 설명: 채널을 떠날 때 ChatSpeaker가 발생합니다.

스피커 음소거

  • 매개 변수: string : speakerName , string : reason , intduration = 0
  • 설명: 채널에서 ChatSpeaker가 음소거되었을 때 발생합니다.

스피커 음소거 해제

  • 매개변수: string : speakerName
  • 설명: 음소거가 해제된 ChatSpeaker가 발생하면 화재가 발생합니다.

이 페이지