TextChatService
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
経験内のテキストチャットの処理を含むサービス、 、メッセージの装飾、テキストのフィルタリング、 、カスタムチャットインターフェイスの開発。
詳しくは、TextChatService の概要 を参照してください。
さらなるカスタマイズのために、TextChatService には次のシングルトンの子供があります:
概要
プロパティ
チャット翻訳が有効かどうかを決定します。
TextChatService を完全に有効にするか、レガシーのチャットシステムに戻すかを決定します。
デフォルトの TextChatService を作成するかどうかを決定します。TextChatCommands .
デフォルトの TextChatService を作成するかどうかを決定します。TextChannels .
方法
提供されたパーツまたはプレイヤーキャラクターの上にチャットバブルを表示します。
ユーザーがエクスペリエンスでチャットできるかどうかを決定します。
2人のユーザーが相互にメッセージを受け取るかどうかを決定します。
ユーザーが親切制御設定などの要因に基づいて直接他のユーザーとチャットできる権限を持っているかどうかを判断します。
イベント
呼び出されると TextChatService:DisplayBubble() が発火します。
クライアントで TextChannel:DisplaySystemMessage() が呼び出されたとき、またはクライアントがサーバーから有効な TextChannel:SendAsync() 応答を受け取ったときに発火します。
送信クライアントによって TextChannel:SendAsync() が呼び出されたときに発火する
コールバック
バブルチャットが表示される直前に呼び出されます。
チャットウィンドウに新しいメッセージが表示される直前に呼び出されます。これはクライアントでのみ実装できます。
TextChatService が受信しているメッセージを受信すると呼び出されます。
プロパティ
ChatTranslationEnabled
チャット翻訳が有効かどうかを決定します。真である場合、システムメッセージはチャットメッセージがプレイヤーの好ましい言語に翻訳される可能性があるときにプレイヤーに通知します。
ChatVersion
TextChatService を完全に有効にするか、レガシーのチャットシステムに戻すかを決定します。このプロパティを Enum.ChatVersion.LegacyChatService に設定すると、効果的に TextChatService を無効にできます。
CreateDefaultCommands
デフォルトの TextChatService を作成するかどうかを決定します。TextChatCommands .
真である場合、次の が作成され、 という名前の TextChatCommands 内に配置されます:
<th>メインの別名</th><th>セカンダリアリアス</th><th>説明</th><th>使用例</th></tr></thead><tbody><tr><td><b>RBXClearコマンド</b></td><td>クリ消す</td><td>cls</td><td>ローカルユーザーのチャットログをクリアします。</td><td><code>/clk の</code></td></tr><tr><td><b>RBXコンソールコマンド</b></td> <td>コンソール</td><td /><td>開発者コンソールを開きます。</td><td><code>/console</code></td></tr><tr><td><b>RBXEmoteコマンド</b></td><td>リアクションモート</td><td>e</td><td>アバターのエモートを再生しまリアクション。</td><td><code>/e ダンス</code></td></tr><tr><td><b>RBXHelpコマンド</b></td><td>ヘルプ</td><td>?</td><td>チャットコマンドのリストを表示します。</td><td><code>/help</code></td></tr><tr><td><b>RBXMute命令</b></td><td>ミュート</td><td>m</td><td>ユーザーの <code>Class.Player.Name|Name</code> または <code>Class.Player.DisplayName|DisplayName</code> をすべての <code>Class.TextChannel|TextChannels</code> でミュートします。</td><td><code>/m ユーザー名</code></td></tr><tr><td><b>RBXチーム命令</b></td><td>チーム</td><td>t</td><td>チームチャットモードに入り、メッセージはチームメンバーにのみ表示されます。</td><td><code>/t</code></td></tr><tr><td><b>RBXUnmuteコманド</b></td><td>ミュート解除</td><td>um</td><td>すべての Class.TextChannel|TextChannels で、ユーザーの Class.Player.Name|Name または Class.Player.DisplayName|DisplayName によってミュートを解除します。</td><td><code>/um ユーザー名</code></td></tr><tr><td><b>RBXVersionコマンド</b></td><td>版</td><td>v</td><td>チャットバージョンを表示する。</td><td><code>/版</code></td></tr><tr><td><b>RBXWhisper命令</b></td><td>ささやき</td><td>w</td><td>別の <code>Class.Player</code> でささやきモードに入る。</td><td><code>/w DisplayName</code> または <code>/w @Username</code></td></tr></tbody>
名前 |
---|
Note that you can edit, create, and remove TextChatCommands even if CreateDefaultCommands が真である場合でも。また、ミュートとミュート解除コマンドはすべての TextChannels に適用されることに注意してください。
CreateDefaultTextChannels
デフォルトの TextChatService を作成するかどうかを決定します。TextChannels .真である場合、Folder という名前の テキストチャンネル が、実行時に TextChatService 内に作成され、下の表に記載された TextChannels を含みます。デフォルトのチャネルのそれぞれには、内部バインドされた TextChannel.OnIncomingMessage コールバック関数を使用して送信されたメッセージに適用された説明された特別な動作があり、チャネルを通じて送信されるメッセージの表示方法を変更します。コールバックは、実行時 () または が作成されたときに自動的に割り当てられます ()。
<th>説明</th></tr></thead><tbody><tr><td><b>RBX一般</b></td><td><code>Class.TextChannel</code> プレイヤーメッセージ用。チャットウィンドウでは、メッセージが変更され、<code>Class.TextChatMessage.PrefixText|PrefixText</code>が、チャットプレイヤーにそれぞれの区別色の名前を与えるための<a href="/ui/rich-text">リッチテキストフォント色タグ</a>を受け取ります。If <code>Class.Player.Team</code> が存在する場合、その <code>Class.Team.TeamColor</code> はデフォルトの名前色ではなく使用されます。</td></tr><tr><td><b>RBXシステム</b></td><td><code>Class.TextChannel</code> システムメッセージ用。チャットウィンドウでは、メッセージが変更され、デフォルトで Class.TextChatMessage.Text にライトグレーのタグが付与され、または Class.TextChatMessage.Metadata に「Error」という単語が含まれている場合は、赤色のタグが付与されます。</td></tr><tr><td><b>RBXチーム[ブリックカラー]</b></td><td><code>Class.TextChannel</code> チーム固有のプレイヤーメッセージ、<code>Class.Team.TeamColor|TeamColor</code> が使用されているときに、<code>Class.Teams</code> サービス内のどの <code>Class.Teams</code> でも作成される。作成されたチャンネルの名前は <b>RBXチーム</b> に続いて <code>Class.Team.TeamColor|TeamColor</code> 名です。たとえば、 RBXTeamCrimson は、 Class.TextChannel が作成されたクラスです。 Class.Team.TeamColor|TeamColor プロパティが「クリムゾン」 Datatype.BrickColor であるアクティブなチームが存在すると、チャットウィンドウでメッセージが変更され、 Class.TextChatMessage.PrefixText|PrefixText が Class.Player.TeamColor|TeamColor と一致し、 [チーム] チームチャンネルがすべての非 Class.Player.Neutral|Neutral プレイヤーに対して作成され、チームチャットを使用できるようになります。チャンネルは、関連する <code>Class.Team.TeamColor|TeamColor</code> の残っているチームがない場合に削除されます。</td></tr><tr><td><b>RBXWhisper:[ユーザー1]_[ユーザー2]</b></td><td><code>Class.TextChannel</code> は、プレイヤーが他のプレイヤーに <code>/whisper</code> コマンドを使用したときに作成され、2人のプレイヤー間のささやきメッセージを伝えます。たとえば <b>RBXWhisper:2276836_505306092</b> は、<code>Class.TextChannel</code> で、プレイヤーに <code>Class.Player.UserId|UserIds</code> があり、<b>2276836</b> と <b>505306092</b> があります。内部のささやきチャンネルには、それぞれの Class.TextSource|TextSources に対応する Class.Player.UserId|UserIds と関連する 2つの Class.TextChatMessage.PrefixText があります。チャットウィンドウでは、メッセージは RBXGeneral と Class.TextChatMessage.PrefixText のメッセージと同じ色に着色され、ローカルユーザーから送信または受信されたメッセージを表示するために Class.TextChatMessage.PrefixText が変更されます。Whisperチャンネルは、プレイヤーがエクスペリエンスを離れると削除されます。</td></tr></tbody>
チャネル |
---|
デフォルトの TextChannel.OnIncomingMessage コールバックは上書きできることに注意してください。また、 が真である場合でも編集、作成、削除できることに注意してください。
異なるテキストチャンネルからのメッセージは、ChannelTabsConfiguration を使用してチャットウィンドウの異なるタブに分離できます。
方法
DisplayBubble
提供されたパーツまたはプレイヤーキャラクターの上にチャットバブルを表示し、このメソッドで指定されたパラメータで BubbleDisplayed イベントを発射します。キャラクター内のパーツ (頭など) を指定すると、プレイヤー以外のキャラクター (NPC) のバブルを表示できます。
このメソッドは、LocalScript でのみ使用でき、または Script で RunContext の Enum.RunContext.Client を持つことができます。
パラメータ
戻り値
CanUserChatAsync
ユーザーがエクスペリエンスでチャットできるかどうかを決定します。親の制御設定などの要因により、ユーザーがメッセージを送信できない可能性があります。userId が現在のサーバーにない場合のエラー。このメソッドは、すべての現在のプレイヤー を使用して、 で または または の で使用できます。このメソッドは、LocalScript でも使用できますが、ローカルプレイヤーの UserId のみです。
パラメータ
戻り値
CanUsersChatAsync
2人のユーザーが相互にメッセージを受け取るかどうかを決定します。互換性のない親の制御設定やブロックされたステータスなどの要因は、ユーザー間のメッセージの配信を妨げる可能性があります TextChannels 内部でこの結果を使用して、ユーザー間でメッセージを配信するかどうかを判断します。このメソッドは、Script に RunContext の Enum.RunContext.Server または Enum.RunContext.Legacy でのみ使用できることに注意してください。
パラメータ
戻り値
CanUsersDirectChatAsync
ユーザーが親の制御設定に基づいて他のユーザーと直接チャットできる権限を持っているかどうかを決定します。使用する場合:
- コミュニケーションのラインはユーザーが開始し(開発者またはゲームプレイが開始したものではない)
- 通信へのアクセスは閉鎖され、制限されています
直接チャットの例は、2人のユーザー間のささやきチャネルです。
結果に応じて、この方法を使用してエクスペリエンスの特定の機能をゲートできます。
直接チャット用の TextChannel を作成するときは、チャネルがユーザー間でメッセージを配信するかどうかを判断できるように、TextChannel:SetDirectChatRequester() を使用してリクエスターユーザーIDを設定します。When TextChannel.DirectChatRequester が null でないとき、 TextChannels 内部でこの結果を使用して、ユーザー間でメッセージを配信するかどうかを判断します。
local whoCanDirectChat = TextChatService:CanUsersDirectChatAsync(requesterUserId, { userId1, userId2 })if #whoCanDirectChat > 0 then-- リクエスターのユーザーIDは、userId1、userId2、または両方とチャットを指向できますelse-- リクエスターのユーザーIDは、userId1 または userId2 でチャットを指向できませんend
このメソッドは、Script 、RunContext 、または Enum.RunContext.Server または Enum.RunContext.Legacy の でのみ使用できます。
パラメータ
直接チャットリクエストを開始したユーザー。要求者のユーザーIDが現在のサーバーにない場合、このメソッドはエラーが発生します。
リクエスターユーザーID が直接チャットしたいユーザーのリスト。現在のサーバーにいないユーザーは無視されます。
戻り値
直接チャットリクエストに参加できるユーザーのリスト。ユーザーの誰もリクエスターのユーザーIDでチャットを指向できない場合、結果は空の配列です。
コードサンプル
This example checks if two users can chat, creates a new TextChannel, and adds them to it.
local TextChatService = game:GetService("TextChatService")
local directChatParticipants = TextChatService:CanUsersDirectChatAsync(userId1, { userId2 })
-- Check for eligible participants
if #directChatParticipants > 0 then
local directChannel = Instance.new("TextChannel")
directChannel.Parent = TextChatService
for _, participant in directChatParticipants do
directChannel:AddUserAsync(participant)
end
return directChannel
end
warn("Could not create TextChannel. Not enough eligible users.")
return nil
イベント
MessageReceived
Like TextChannel.MessageReceived , クライアントで TextChannel:DisplaySystemMessage() が呼び出されたとき、またはサーバーから有効な TextChannel:SendAsync() 応答が受信されたときに発動します。このイベントはクライアントでのみ発動します。
サーバーの TextChannel.ShouldDeliverCallback プロパティがバインドされ、false を返す場合、クライアントは TextChatService.MessageReceived を発射しません。
TextChatMessage パラメータを使用して、TextSource とメッセージのテキスト (TextChatMessage.Text を含む) を取得します。
TextChatMessage パラメータは、TextChatService.OnIncomingMessage または TextChannel.OnIncomingMessage にバインドされた関数の最終結果です。
パラメータ
受信した TextChatMessage 。
SendingMessage
送信クライアントによって TextChannel:SendAsync() が呼び出されたときに発火するこれを使用して、サーバーの応答を待っている間、プレースホルダーメッセージをユーザーに表示することができます TextChannel:SendAsync() .
パラメータ
TextChatMessage からの TextChannel:SendAsync() 呼び出し。
コールバック
OnBubbleAdded
バブルチャットが表示される直前に呼び出されます。これはクライアントでのみ実装できます。
これを使用して、個々のバブルチャットメッセージをカスタマイズします。このコールバックが BubbleChatMessageProperties を返す場合、これらのプロパティは関連するバブルに適用され、BubbleChatConfiguration プロパティを上書きします。If a UICorner , UIGradient , or ImageLabel は、BubbleChatMessageProperties で親になっている場合、それぞれの相手を定義した BubbleChatConfiguration もオーバーライドします。
チャットメッセージがプレイヤーによって送信された場合、message.TextSource はそのプレイヤーに対応し、adornee は nil になります。
チャットメッセージが を介して送信される場合、 が提供され、 は になります。
クライアントがメッセージを送信しているときにバインドすると、このコールバックは 2 回実行されます:最初にメッセージがローカルで送信され、受信されたとき、クライアントがサーバーからフィルタリングされたメッセージの結果を受け取ったとき。
パラメータ
受信する TextChatMessage 。
バブルチャットメッセージに付属するパーツまたはキャラクター。
戻り値
BubbleChatMessageProperties が返されると、そのプロパティは BubbleChatConfiguration プロパティをオーバーライドします。
OnChatWindowAdded
チャットウィンドウに新しいメッセージが表示される直前に呼び出されます。これはクライアントでのみ実装できます。
チャットウィンドウに表示される個々のメッセージをカスタマイズするために使用します。このコールバックが ChatWindowMessageProperties を返す場合、これらのプロパティは関連するメッセージに適用され、ChatWindowConfiguration プロパティを上書きします。If a が の親になっている場合、 で定義されたプロパティもオーバーライドされます。
クライアントがメッセージを送信しているときにバインドすると、このコールバックは 2 回実行されます:最初にメッセージがローカルで送信され、受信されたとき、クライアントがサーバーからフィルタリングされたメッセージの結果を受け取ったとき。
パラメータ
受信する TextChatMessage 。
戻り値
ChatWindowMessageProperties が返されると、そのプロパティは ChatWindowConfiguration プロパティをオーバーライドします。
OnIncomingMessage
TextChatService が受信しているメッセージを受信するときに呼び出されます。クライアント上でのみ実装できます。
これを使用して TextChatMessages を装飾します。このコールバックが TextChatMessageProperties を返す場合、それらのプロパティは TextChatMessage パラメータとマージして、新しい TextChatMessage を作成します。
クライアントからメッセージを送信するときにバインドされると、このコールバックは 2 回実行されます;最初はメッセージが最初にローカルで送信されて受信され、再びクライアントがサーバーからフィルタリングされたメッセージの結果を受け取るときです。
この TextChatService.OnIncomingMessage コールバックは、 以前 のすべての TextChannel.OnIncomingMessage コールバックの前に実行します。
ソースコードでは、これを 1回だけ定義する必要があります。複数のバインディングは、非決定的な方法で互いにオーバーライドします。
パラメータ
受信する TextChatMessage 。
戻り値
が返された場合、それらのプロパティは パラメータとマージされて、それらのプロパティを持つ新しい を作成します。そうでない場合は、 が返された場合、 は変更されません。