こんにちは、りょうです。
今回はサーバーに導入していないしていないBOTのコマンドで荒らされた場合の対処方法の紹介です。
最近それ専用の荒らしBOTも作られているのでやられる前に早めの対策をしておくと良いと思います
なぜ導入していないはずなのに実行できるのか
まずDiscordのBOTには以下の2種類があります
- サーバーに導入して使うBOT(こっちが普通のやつ)
- ユーザーに導入して使うBOT(こっちが今回話す方)
ユーザーインストールという機能で、そのBOTが導入されていない場所でもスラッシュコマンドを実行することができるようになります。
これを悪用した荒らしが今回のケースになります。このタイプの場合BANやキックができません。
なので正しい対処法を知っておくことが大切です
対処法
ユーザーインストールコマンドを実行できないようにする(他の人には見えないようにする)ことが必要です。
1: サーバー設定→ロール→メンバー用のロール(もしくはeveryone)を選択。
2: 権限設定を開く
3: 下にスクロールして外部のアプリを使用の項目をオフにする
これで完了です。ただし、個別に設定されている場合はそのチャンネルでは引き続き使用できます
あとは当然ですがコマンド実行した人BANすれば終わります
実行者の確認
実行者はコマンドのメッセージの インタラクション情報を表示
からかくにんできます
BOT開発者側での対応
ユーザーインストールコマンドの場合はephemeralをかけるのがいいんじゃないでしょうか。
あと特に何も設定しないとサーバー、DM等どこでも使えるので制限するのもいいと思います。
discord.js
// ...
data: new SlashCommandBuilder()
.setName('command')
.setDescription('command')
.setContexts(InteractionContextType.Guild) // ここで実行場所を決める
.setIntegrationTypes(ApplicationIntegrationType.GuildInstall, ApplicationIntegrationType.UserInstall) // ここでGuild, Userを決める
discord.py
# ...
from discord.app_commands import (
CommandTree,
allowed_installs, guild_install, user_install, # ここでサーバー、ユーザーどちらにインストールするか決める
allowed_contexts, dm_only, guild_only, private_channel_only, # ここで使用できる場所を決める
)
まとめ
今回はユーザーインストールコマンドを悪用した荒らしへの対処法の紹介でした。
正直使うこと無いんで権限オフにしておくのがいいと思います
もしわからないことがあればコメントしてもらえれば。
Discordに湧く荒らしの情報や対策方法の共有をしている自鯖↓