Discord Botの権限設計の考え方 - 「管理者権限で招待して終わり」にしない運用
Botを入れるときに管理者権限を丸ごと渡していないか、という話です。最小権限の考え方、ロール階層とBotロールの位置、なまずわーくすの4Bot(なまずん・なまずんロール・IKUKAMO・すらまっぱぎ)それぞれに必要な権限の目安と、権限エラー時の確認順序をまとめました。
Botの機能紹介ではなく、招待するときに何を渡し、何を渡さないかという運用側の話です。Discordの権限は後から絞るより、 入れる前に設計しておくほうがずっと楽です。
「管理者権限で招待して終わり」の何が問題か
管理者権限(Administrator)は、チャンネルの権限設定をすべて素通りする特別な権限です。 Botに渡すと確かに権限エラーは出なくなりますが、代わりに「このBotは何ができるのか」をサーバー側で管理できなくなります。 Botのトークンが万一漏えいした場合の影響も、渡した権限の分だけ大きくなります。 動かすために管理者権限が必要なBotはほとんどありません。 なまずわーくすの4Botも、管理者権限を前提にしていません。
最小権限の考え方
権限設計の手順は3ステップです。
- Botがやることを動詞で書き出す。 「メッセージを投稿する」「ロールを付け外しする」「メッセージを削除する」など。
- 動詞を権限に対応させる。 投稿ならメッセージ送信+埋め込みリンク、ロール操作ならロールの管理、という具合です。
- 対応しない権限は渡さない。 「念のため」で渡した権限は、あとから誰も見直しません。
ロール階層とBotロールの位置
権限エラーの原因として最も多いのが、権限の不足ではなくロール階層の位置です。 Botは、自分のロールより上にあるロールを操作できません。 たとえばロールを付け外しするBotなら、Botのロールを 「Botが操作する対象のロールすべてより上」に置く必要があります。 逆に、Botのロールを管理者ロールより上に置く必要はありません。 「操作対象より上、運営ロールより下」が基本の位置です。
なまずわーくすの4Botに必要な権限の目安
- なまずん(募集・予定・通知・相場確認): メッセージ送信・埋め込みリンク・メッセージ履歴の閲覧が中心です。 募集や週間予定の投稿を整理するため、投稿チャンネルでのメッセージ管理を追加で渡す構成が目安です。 ロール操作は不要です。
- なまずんロール(アライアンス役割管理): /setup でロールを一括作成・更新するため、ロールの管理が必須です。 そのぶん、Botロールの階層位置(作成・操作するロールより上)の確認が導入時の要点になります。
- IKUKAMO(匿名オフ会調整): ボタンや投票メッセージの投稿・更新が中心なので、メッセージ送信・埋め込みリンクが基本です。 匿名投票の集計はBot内部で行うため、メンバー情報系の強い権限は不要です。
- すらまっぱぎ(挨拶Bot): 決まったチャンネルへのメッセージ送信だけで動きます。 4つの中では最も権限が少なく、投稿チャンネル1つに絞って渡すのが目安です。
いずれもスラッシュコマンドを使うため、招待時のスコープには applications.commands が含まれている必要があります(招待リンクに含まれています)。
チャンネル単位で絞る
サーバー全体で権限を渡す代わりに、Botが動くチャンネルだけで権限を上書きする方法もあります。 挨拶Botのように投稿先が決まっているBotは、サーバー全体では権限なし、 該当チャンネルだけ送信可、という構成にすると影響範囲が明確になります。 逆に、なまずんロールのようにサーバー全体のロールを扱うBotは、 チャンネル絞りでは解決しない点に注意してください。
権限エラー時の確認順序
Botが動かないときは、この順で確認すると早く原因に当たります。
- Botのロールに必要な権限があるか(サーバー設定 → ロール)
- Botのロールが、操作対象のロールより上にあるか(階層)
- 該当チャンネルの権限上書きで、Botの権限が打ち消されていないか
- スラッシュコマンドが表示されない場合、招待し直しが必要か
1で足りていても2や3で止まっているケースが大半です。 「権限を足す」前に「どこで打ち消されているか」を探すのが近道です。
導入前チェックリスト
- □ Botがやることを動詞で書き出した
- □ 管理者権限を渡していない
- □ Botロールの階層位置を決めた(操作対象より上、運営より下)
- □ 投稿先が決まっているBotはチャンネル単位で絞った
- □ 誰がBotの権限を見直すか(担当)を決めた
関連記事
4つのBotをどのサーバーにどう入れるかの使い分けはDiscord Bot 4選に、なまずんロールの /setup の具体的な手順はアライアンスレイドの役割自動管理にまとめています。