Discordアンチスパムボット:レート制限、重複、大量メンション
Discordのアンチスパムボットは、各メンバーがどれだけ速く、どれだけ頻繁に投稿しているかを見て、上限を超えた人をタイムアウトし、後始末をします。 Noxyrは三つを見ます。短い時間枠での多すぎるメッセージ、繰り返される同じメッセージ、そして一つのメッセージでの多すぎるメンションです。すべての数字はあなたが変えられます。
三つのトリガー、一つのタイムアウト
Noxyrは各メンバーの最近のメッセージをメモリに保持し、時間枠の中でどれかの上限を超えた瞬間に動きます。以下は、最初に使う既定値です。
| 設定 | 既定値 | 捉えるもの |
|---|---|---|
| window_seconds の中の max_messages | 8秒に6件のメッセージ | 連投 |
| duplicate_limit | 同一のメッセージ4件 | コピペのスパム |
| mention_limit | 一つのメッセージに6件のメンション | 大量のメンション |
| timeout_minutes | 10 | メンバーがミュートされる時間 |
| delete_messages | オン | 問題のメッセージを削除 |
トリガーが作動すると、メンバーはタイムアウトされ、終わるまでメッセージの送信、リアクション、ボイスへの参加ができません。ログチャンネルには、どのトリガーが作動したかが書かれた記録が付くので、なぜそうなったかが分かります。
オンにする
アンチスパムは、荒らし対策と同じく初期状態でオフです。セキュリティのモジュールは主スイッチとしてオンになっていますが、各保護をオンにするまで何も動きません。つまり、Noxyrを追加してもメンバーを予期せず管理し始めることは決してありません。
- まず、ログチャンネルを選ぶ。それがなくてもボットは動きますが、何をしたかが分かりません。
- オンにする:
/security antispam enabled:trueを実行するか、ダッシュボードのSecurityのページを開きます。 - 権限を確認する。ボットにはメンバーのタイムアウトとメッセージの管理の権限が必要です。
- 数日間ログを見て、調整する。
除外される人
管理者の権限を持つメンバー、または設定した管理者のロールを持つ人には作用せず、ボットからのメッセージは調べられません。アンチスパム専用の信頼リストはありません。あるチャンネルをそこから外すには、そのチャンネルでボットのView Channelを拒否するか、/security ignoreでアンチスパムのルールを、選んだチャンネルまたはカテゴリでオフにしてください。
実際のサーバーに合わせて調整する
既定値は普通のチャットに合っています。盛り上がるイベントは違います。
- ドロップ中の盛り上がるチャンネルでは、普通の人でも8秒に6件のメッセージに引っかかります。機能をオフにするのではなく、
max_messagesを上げるか、そのイベントの間はそのチャンネルを無視してください。 - 荒らしのある静かなサーバーでは、上限を下げることができます。6秒に4件のメッセージでも、ほとんどの人が打つよりずっと多いです。
- ルールの厳しいサーバーでは、
timeout_minutesを長くして、繰り返し違反する人がより長く待機するようにできます。
一度に一つの数字を変え、待ってください。三つ変えると、どれで誤報が止まったのか分からなくなります。
アンチスパムにできないこと
これは内容ではなく、振る舞いに反応します。丁寧なメッセージが詐欺かどうかは分かりません。そのためには、リンクのルールを加えてください。アンチリンクボットが招待と詐欺リンクを削除し、乗っ取られたアカウントの防御は、2分以内に3つのチャンネルに投稿された同じメッセージまたはリンクを削除します。レイドモードは、参加の速度のチェックを加えます。30秒に10人の参加です。これらはすべて保護のドキュメントで扱っています。
具体例
あるメンバーが、同じ文を五回貼り付けたとします。四回目の同一のメッセージで、重複の上限を超えます。Noxyrはそのメンバーを10分間タイムアウトし、コピーを削除し、重複のトリガーが作動したことをログチャンネルに記録します。ログを読んだモデレーターは、どのルールが捉えたかを正確に見て、より長いタイムアウトか警告が妥当かを決められます。
次に、乗っ取られたアカウントが、一つのメッセージで一つのロールに六回メンションしたとします。メンションの上限は、最初のメッセージで捉えるので、そのping がロール全体をもう一度起こすことはありません。
ボットが何もしていないように見えるとき
- まだオフ。有効にするまで、アンチスパムは何もしません。
/security statusで確認してください。 - そのメンバーは管理者。管理者と管理者のロールには決して作用しないので、通常のアカウントでテストしてください。
- ボットに権限が足りない。メンバーのタイムアウトがなければミュートできず、メッセージの管理がなければ削除できません。
- ロールが低すぎる。ボットは、最上位のロールが自分より上にある人をタイムアウトできません。
- そのチャンネルが無視されている。
/security ignore action:Listを確認してください。
アンチスパムは、AIチャットのチャンネルやチケットのチャンネルの中でも動くので、そこでの連投も、ほかの場所と同じように扱われます。
どこから始めるか迷うなら、既定値を一週間そのままにしてください。毎日ログチャンネルを読み、一度に一つの数字だけを緩めたり締めたりしてください。ログにはどのトリガーが作動したかが示されるので、あなたのコミュニティにより緩いメッセージ上限が必要か、より厳しい重複上限が必要かが分かります。
次のステップ
詳細はアンチスパムのドキュメントにあります。戦略についてはアンチスパムボットのガイドを読み、Discordサーバーをレイドから守る方法をご覧ください。層を重ねるなら、認証と荒らし対策と組み合わせてください。試すなら、Noxyrを追加してください。
よくある質問
Noxyrのアンチスパムボットは何を検出しますか?
時間枠の中で、三つの上限のどれかをメンバーが超えると動きます。メッセージの総数、同一のメッセージ、一つのメッセージでのメンションです。既定値は、8秒に6件のメッセージ、4件の重複、6件のメンションです。
誰かがスパムを送ると、何が起きますか?
既定では10分間そのメンバーがタイムアウトされ、delete_messagesがオン(既定)なら、問題のメッセージは削除されます。ログチャンネルには、トリガーを含む記録が付きます。
アンチスパムはどうやってオンにしますか?
初期状態ではオフです。/security antispam enabled:trueを実行するか、ダッシュボードのSecurityのページでオンにしてください。
チャンネルをアンチスパムから除外できますか?
はい。/security ignoreを使えば、そのチャンネルまたはカテゴリでアンチスパムのルールをオフにできます。管理者と設定した管理者のロールには、決して作用しません。
アンチスパムボットは無料ですか?
はい。アンチスパムとほかのセキュリティのモジュールは無料です。