次のチャットモジュールを使用して、レガシーチャットシステムのサーバー側の動作をサポートできます、包括:
- ChatService : 他のすべてのチャットモジュールを管理するシングルトン。
- ChatSpeaker : チャットチャンネルでメッセージを作成できるエンティティ; それぞれ Player に自動的にチャットスピーカーが付属し、チャットスピーカーを作成することでボットがチャットできます。
- チャットメッセージ : チャットスピーカーがチャットチャンネルに送信するコンテンツのコンテナ; メッセージを形式化するためのメタデータや、コマンドに追加機能を追加するためのメタデータを含む。
- ChatChannel : ChatSpeakers がチャットメッセージを交換できるチャネル; チームチャットとスピーチチャットにも使用されます。
聊天サービス
ChatService は、Chatチャンネル や Chatスピーカー など、Lua チャットシステムのサーバー側の動作を処理する単一オブジェクトです。
すべての チャットモジュール フォルダ内の機能が返され、その機能はチャットサービスのシングルトンで呼び出されます。
手法
チャンネルを追加する
- 説明: 指定された名前のチャットチャンネルオブジェクトを作成し、返します。
- 返却: チャットチャンネル
チャネルを削除
- 説明: 指定された名前のチャネルを削除
- 返り値: 無効
Get Channel を取得
- 説明: 返すチャネルに指定された名前、または nil が存在しない場合。
- 返却: チャットチャンネル
スピーカーを追加する
- 説明: 指定された名前でチャットにスピーカーを作成して追加し、それを返します。
- 返却: ChatSpeaker
スピーカーを削除
- 説明: 指定された名前でチャットからスピーカーを削除します。
- 返り値: 無効
ゲットスピーカー
- 説明: 返すスピーカーに指定された名前、または nil 存在しない場合。
- 返却: ChatSpeaker
チャネルリストを取得する
- パラメータ: なし
- 説明: チャットのすべての非プライベートチャネルの名前のリストを返します。
- 返り値: 配列< string >
GetAutoJoinChannelListを取得
- パラメータ: なし
- 説明: 返すのは、AutoJoin が true に設定されたチャットのすべてのチャネルの名前のリストです。
- 返り値: 配列< string >
登録フィルタメッセージ機能
- パラメータ: : 、 機能 : 、 :
- 説明: 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
登録解除フィルタメッセージ機能
- 説明: フィルタ機能 (RegisterFilterMessageFunction によって登録される) が、その識別子により登録解除されます。functionId
- 返り値: 無効
RegisterProcessコマンド機能Function
- パラメータ: : 、 機能 : 、 :
- 説明: プロセスコマンド機能をチャットに登録し、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
登録解除プロセスコマンド機能
- 説明: 登録プロセスコマンド機能 (RegisterProcessCommandsFunction によって登録) が指定された識別子により、コマンドプロセッサーを登録解除します。, functionId 。
- 返り値: 無効
イベント
チャンネル追加
- 説明: チャネルがチャットに追加されると、発火します。
チャンネルが削除されました
- 説明: チャネルがチャットから削除されると、発火します。
スピーカー追加
- 説明: スピーカーがチャットに追加されると発火します。
スピーカーを削除
- 説明: スピーカーがチャットから削除されると発火します。
聊天スピーカー
A チャットスピーカー は、チャットチャンネル で話すことができる 1 つのエンティティの表現です。ゲームに自動的に接続されたそれぞれの Player には、関連するチャットスピーカーがあります。追加のチャットスピーカーは、ChatService:AddSpeaker() を使用して、非ユーザー(アナウンサーやヒントメッセージなど)に構築できます。
属性
名前
- 説明: このスピーカーを参照するときに使用される他の多くの機能を呼び出している間、このスピーカーの名前。
手法
Joinチャンネル
- 説明: 指定された channelName でスピーカーをチャネルに追加します
- 返り値: 無効
離れるチャネル
- 説明: 指定された channelName でチャネルからスピーカーを削除する
- 返り値: 無効
チャネルリストを取得する
- パラメータ: なし
- 説明: スピーカーが入っているすべてのチャネルの名前のリストを返します。
- 返り値: 配列< string >
IsInチャンネル
- 説明: スピーカーが指定された channelName チャネルにあるかどうかを返します。
- 返す: ブール
メッセージを言う SayMessage
- 返却: チャットメッセージ
送信メッセージ
- パラメータ: : 、 : 、 : 、 : 、 :
- 説明: 指定された ChatSpeaker にメッセージを送信します。チャンネルにそのようなスピーカーがない場合、このメソッドは警告を作成し、スピーカーはメッセージを見ることができません。
- 返り値: 無効
送信システムメッセージ
- パラメータ: : 、 : 、 :
- 説明: システムメッセージを ChatChannel に送信し、指定された channelName を持っています。スピーカーがチャネチャンネルにいない場合、このメッセージは警告を作成し、チャネルの他のスピーカーはメッセージを見ることができません。
- 返り値: 無効
ゲットプレイヤー
- パラメータ: なし
- 説明: 返す Player スピーカーに関連するオブジェクト。スピーカーがユーザー (ボット) ではない場合、これは nil を返します。
- 返す: Player または nil
セット追加データ
- 説明: 特定の key の下でスピーカーに追加データを設定します。スピーカーが チャットメッセージ を送信するたびに、メッセージに明示的に指定されていない場合、この追加データがメッセージに付属します。たとえば、これによりスピーカーのチャットカラーが設設定するできます。
- 返り値: 無効
追加データを取得する
- 説明: 返す extraデータは、SetExtraData で設定された key に関連する追加データです。
- 返り値: バリアント
メインチャネルを設定する
- 説明: スピーカーを提供されたチャネルで話すように設定します。MainChannelSet を発射します。
- 返却: nil
イベント
サイドメッセージ
受信したメッセージ
受信システムメッセージ
チャンネル参加済み
- パラメータ: : 、 : 、 :
- 説明: スピーカーが指定された ChatChannel に参加すると、発射されます。
チャンネル左
- 説明: スピーカーが指定された ChatChannel を離れると、発射されます。
ミュートされた
- 説明: スピーカーが ChatChannel で指定された期間 (提供された場合) 静音されたときに発射されます (指定された場合)。提供されるかもしれない、または提供されない reason があります。
ミュート解除
追加データ更新済み
- 説明: スピーカーの追加データのキーのデフォルト値が SetExtraData を使用して更新されると、発射されます。
メインチャネルセット
- 説明: スピーカーのメインチャンネルが指定された ChatChannel に変更されたときに発射されます。
聊天メッセージ
A チャットメッセージ は、チャットスピーカー から送信されたメッセージを表すデータ構造です。テキストの長さ、テキストが Roblox にフィルタリングされたかどうか、メッセージの外外見に関する追加情報など、メッセージに関するデータが含まれています。
属性
ID
- タイプ: int
- 説明: メッセージのユニークな数字識別子。
スピーカーから
- タイプ: string :
- 説明: メッセージを送信した ChatSpeaker の名前。
オリジナルチャンネル
- タイプ: string :
- 説明: メッセージが発生した ChatChannel の名前。
フィルタリングされている
- タイプ: bool
- 説明: メッセージが Roblox にフィルタリングされるかどうかを説明します (真の場合、メッセージは nil になります)
メッセージ長
- タイプ: int
- 説明: メッセージの長さ。メッセージがフィルタリングされた場合は、これを使用してハッシュアウトされた文字列を生成できます。
メッセージ
- 説明: メッセージのテキスト。このプロパティは、IsFiltered が true の場合 nil です。
メッセージ種類
- タイプ: string :
- 説明: メッセージの種類。これらの種類はチャットステートモジュールで説明されています:
- 可能な値: 、 、 、 、 、 、
時刻
追加データ
- タイプ: 辞書< string , バリアント>
チャットチャネル
ChatChannel は、メッセーチャンネルを ChatSpeakers 間で交換するための手段である単一のチャネルに関するデータを保存するオブジェクトです。また、ユーザーがチャネルに手動で参加または退出できるかどうかを決定するメッセージの表示可能性のプロパティもあります (/join または /leave コマンドを使用して)。
デフォルトでは、各ユーザーには「すべて」と「システム」チャットチャンネルに自動的に追加される 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 が提供されると、理由がメッセージに含まれます。
- 返り値: 無効
マイトスピーカー
- パラメータ: : 、 : 、 int 、 : 、 int
- 説明: チャンネルで指定された speakerName でスピーカーをミュートし、秒単位の期間を指定します。if duration が nil または 0 である場合、ミュートは無期限です。reason が提供されると、理由を含むチャネルにメッセージが送信されます。
- 返り値: 無効
スピーカーをミュート解除
- 説明: チャネルで指定された speakerName でスピーカーをミュート解除します。
- 返り値: 無効
スピーカーをミュートする IsSpeakerMuted
- 説明: 指定された speakerName のスピーカーが現在チャネルでミュートされているかどうかを説明します。
- 返す: ブール
スピーカーリストを取得する
- パラメータ: なし
- 説明: 返すリストには、現在チャネルに含まれる ChatSpeaker の名前がすべて含まれています。
- 返り値: 配列< string >
送信システムメッセージ
- 説明: 「システム」ChatSpeakerからチャネルにメッセーチャンネルを送信します。
- 返り値: 無効
登録フィルタメッセージ機能
- パラメータ: : 、 機能 、
- 説明: フィルター機能 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
登録解除フィルタメッセージ機能
- 説明: フィルタ機能 (RegisterFilterMessageFunction によって登録される) が、その識別子により登録解除されます。functionId
- 返り値: 無効
RegisterProcessコマンド機能Function
- パラメータ: : 、 機能 、
- 説明: プロセスコマンド機能を登録し、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
登録解除プロセスコマンド機能
- 説明: 登録プロセスコマンド機能によって登録されたコマンドプロセッサー (登録プロセスコマンド機能によって登録された識別子を持つ)を、functionId として登録解除します。
- 返り値: 無効
イベント
メッセージ投稿済み
- 説明: チャネルにメッセージが投稿されると発火します。
スピーカーが参加済み
- 説明: チャネルに ChatSpeaker が参加すチャンネルときに発火します。
発言者左
- 説明: チャネルを離れると、ChatSpeaker が発チャンネルします。
スピーカーミュート
- パラメータ: : 、 : 、 int 、 : 、 int
- 説明: チャネルで ChatSpeaker がミュートされたときに発火します。
スピーカーのミュート解除
- 説明: チャットスピーカーがミュート解除されると発火します。