Repository navigation
ChatEvent
Koukunn_ edited this page Feb 25, 2025
·
2 revisions
このモジュールは、Minecraft Bedrock Edition の Script API を使用して、チャットを監視、記録、管理するためのモジュールです。スパム対策、不適切発言のフィルタリング機能を備えています。
-
チャットの記録:
- プレイヤーのチャットメッセージをスコアボード(
message)に記録します。 - スコアボードのエントリ名は
{送信者名}_{メッセージ内容}の形式になります。 - 記録されたチャットは3秒後に自動的に削除されます。
- モジュール有効化時に、既存のチャットログをクリアします。
- プレイヤーのチャットメッセージをスコアボード(
-
チャットタグの付与:
-
w:chat_[メッセージ内容]という形式のタグをメッセージ送信者に付与します(メッセージ内容はタグの長さに収まる範囲)。 - 付与されたタグは、1秒後に削除されます
-
w:chat_cancelタグを持つプレイヤーのメッセージは送信されません。
-
-
文字数制限:
- 150文字を超えるメッセージは送信できません。
-
スパム対策:
- 同一メッセージ検知: 短時間に同じメッセージを複数回送信することを検知します。
- 類似メッセージ検知: 短時間に類似したメッセージを複数回送信することを検知します(Jaro-Winkler距離で類似度を計算)。
- スパムと判定されたプレイヤーは、30秒間メッセージを送信できなくなります。
-
不適切発言フィルタ:
- 定義済みの禁止ワードリストに一致する単語を含むメッセージは送信できません
- 不適切な発言と判断した場合、ワールド全体に警告メッセージを表示します。
| タグ名 | 説明 | 付与対象 | 備考 |
|---|---|---|---|
w:chat_[メッセージ内容] |
メッセージ送信時に、その内容に基づいてプレイヤーに付与されます。 | プレイヤー | 1秒後に自動削除。メッセージが長い場合は、タグの長さに合わせて切り詰められます。 |
w:chat_cancel |
このタグを持つプレイヤーは、メッセージを送信できません。 | プレイヤー |
| スコアボード名 | 説明 | キー(Key) | 値(Value) |
|---|---|---|---|
message |
プレイヤーのチャットメッセージを一時的に保存します。 |
{送信者名}_{メッセージ内容} の形式 |
常に 0 |
このモジュールには、多数の禁止ワードが設定されています。差別用語、侮辱、猥褻な言葉、挑発的な言葉などが含まれます。具体的なリストはコード内の blockedWords 配列を参照してください。
-
同一メッセージ検知:
-
recentMessages(Map) に、各プレイヤーの最近のメッセージとその送信時刻を記録します。 - メッセージ送信時に、
spamTimeframe(デフォルト: 2秒) 以内に送信されたメッセージを抽出します。 - 抽出したメッセージの中に、送信しようとしているメッセージと完全に一致するものがあれば、
identicalCountを増やします。 -
identicalCountがspamThreshold(デフォルト: 2) 以上の場合、スパムと判定します。
-
-
類似メッセージ検知:
- 上記と同様に、最近のメッセージを抽出します。
- Jaro-Winkler距離を用いて、送信しようとしているメッセージと、抽出した各メッセージとの類似度を計算します。
-
similarityThreshold(デフォルト: 0.8) 以上の類似度を持つメッセージがあれば、similarCountを増やします。 -
similarCountがspamThreshold以上の場合、スパムと判定します。
- メッセージに
{、}、_が含まれていると、スコアボードのエントリ名が正しく生成されない可能性があります。 - スコアボードに記録されたチャットは3秒後に自動削除されますが、定期的なログ整理を推奨します。