Discord Botの入れ方は、App Directoryから追加する、配布元の招待リンクを開く、自作Botの招待URLを組み立てる、の3通りです。どの経路でも最後は同じ認可画面に行き着き、そこで「どのサーバーへ」「どの権限で」入れるかを決めます。この記事では、追加できる人の条件、認可画面に並ぶ権限の読み方、サーバー追加とユーザー追加の違い、入れたのに動かないときの確認順までを、2026年10月6日時点のDiscord公式ドキュメントに沿って整理しました。Botを自分で作るところから始める場合はDiscord Botの作り方|アプリ登録から24時間稼働までを手順どおりにを先に読んでください。
まとめ|Discord Botの入れ方は3経路で、権限の確認が失敗を防ぐ
入れる操作そのものは数クリックで終わります。時間がかかるのは、その前後の確認です。前は「自分にサーバー管理の権限があるか」、後は「Botに渡した権限とロールの位置で、期待した動作ができるか」。この2点を外すと、追加ボタンが出ない、入ったのに反応しない、という相談になります。
判断の軸はひとつで、認可画面に「管理者」が並んでいたら一度止まる。管理者権限はチャンネルごとの制限まで素通りする強さがあり、必要な権限だけを個別に渡せば済むBotがほとんどです。自作Botなら招待URLのpermissions値を自分で決められるので、最小の組み合わせから始めて足していく順番にしてください。
Botをサーバーへ追加する3経路|App Directory・配布リンク・自作の招待URL
経路は違っても、内部ではすべてOAuth2の認可URLを開いています。違うのは、そのURLを誰が用意したかだけです。
App Directoryの「アプリを追加」からサーバーへ入れる操作の流れ
Discordアプリの中でBotを探して入れる方法です。App Directoryで目的のアプリを開き、追加ボタンから「サーバーに追加」を選ぶと、追加先のサーバーを選ぶ画面と権限の確認画面が続きます。公式のApplication Resourceのドキュメントによると、追加ボタンの遷移先は開発者がInstall Linkとして設定したもので、「Discord Provided Link」「Custom URL」「None」の3種があります。Noneを選んだアプリには追加ボタンが出ず、App Directoryにも載りません。
探しているBotが見つからないとき、Botが消えたとは限りません。開発者が配布を招待リンクだけにしている可能性があるので、Botの公式サイトや配布ページを当たってください。
配布サイトや公式サイトの招待リンクから入れるときに見る2箇所
top.ggのような配布サイトや、Bot開発者の公式サイトに置かれた「Invite」ボタンも、中身はdiscord.com/oauth2/authorizeで始まるURLです。クリックする前にURLを見る習慣をつけると、事故が減ります。
見るのは2箇所。ドメインがdiscord.comであること、そしてpermissions=の後ろの数字です。前者が違えば認可画面に似せた偽サイトを疑い、後者が8なら管理者権限の要求です。数字の読み方は後半の章で、スクリプトつきで説明します。
自作Botを招待URLで入れるときのclient_idとscopeの指定
自作Botは、自分で招待URLを組み立てます。OAuth2のドキュメントにBot認可フローのパラメータが定義されており、scopeにはbotが必須です。guild_idを付けると追加先のサーバーが選択済みになり、disable_guild_select=trueで別のサーバーへの変更を禁じられます。
https://discord.com/oauth2/authorize
?client_id=Developer PortalのApplication ID
&scope=bot
&permissions=84992
&guild_id=追加先サーバーのID
&disable_guild_select=true
&integration_type=0
84992はチャンネルを見る(1024)、メッセージを送る(2048)、埋め込みリンク(16384)、履歴を読む(65536)の合計です。integration_type=0はサーバーへのインストールを意味します。同じドキュメントには、スラッシュコマンド登録用のapplications.commandsスコープはbotスコープに既定で含まれると書かれています。古い解説でscope=bot+applications.commandsと併記しているのは、明示しても害がないためで、どちらでも構いません。Application IDの取り出し方とトークンの扱いは作成手順の記事の工程1にあります。
入れる前に確認するサーバー側の条件|管理権限と2段階認証の要件
「追加先のサーバー一覧に目的のサーバーが出てこない」相談は、ほぼこの章の2条件で説明がつきます。
サーバー管理(MANAGE_GUILD)を持つメンバーしか追加できない仕組み
Application Resourceのドキュメントには、サーバーへインストールするアプリはMANAGE_GUILD権限を持つサーバーメンバーが認可しなければならない、と明記されています。日本語のDiscordでは「サーバー管理」と表示される権限です。
認可画面の選択肢に出るのは、自分がこの権限を持つサーバーだけ。一般メンバーとして参加しているサーバーは最初から並びません。入れたいBotがあるなら、サーバーのオーナーか管理者に招待リンクを渡して追加してもらうのが正規の手順です。権限を一時的にもらって自分で入れる運用は、権限を戻し忘れる事故につながるので勧めません。
管理系の権限を求めるBotでオーナーの2段階認証が必要になる条件
OAuth2のドキュメントでは、昇格した権限を持つBotをサーバー全体の2段階認証が有効なサーバーへ追加するとき、Botのオーナーアカウントに2段階認証を課すとされています。Permissionsのドキュメントで対象の印が付いているのは、メンバーのキック・BAN、管理者、チャンネル管理、サーバー管理、メッセージ管理、ロール管理の7つです。
サーバー側でモデレーションの2段階認証要件を有効にしている場合、自作Botにこれらの権限を渡すなら、Developer Portalのアカウント側も2段階認証を済ませておく必要があります。既製Botなら開発者側の設定なので利用者は気にしなくてよく、自作Botのときだけ確認してください。
認可画面に出る権限の読み方|permissions値を分解して過剰な要求を見抜く
認可画面のチェック項目は日本語で並びますが、招待URLの数字を読めればクリック前に判断できます。値は権限ごとのビットを足し合わせた整数です。
招待URLのpermissions値をビットに分解するPythonスクリプト
Permissionsのドキュメントにある値をもとに、よく出る権限だけを表にしたスクリプトです。標準ライブラリだけで動き、Python 3.8以上を想定しています。
# perms.py:招待URLのpermissions値を権限名へ分解する
import sys
from urllib.parse import urlparse, parse_qs
FLAGS = {
1: "KICK_MEMBERS",
2: "BAN_MEMBERS",
3: "ADMINISTRATOR",
4: "MANAGE_CHANNELS",
5: "MANAGE_GUILD",
10: "VIEW_CHANNEL",
11: "SEND_MESSAGES",
13: "MANAGE_MESSAGES",
14: "EMBED_LINKS",
15: "ATTACH_FILES",
16: "READ_MESSAGE_HISTORY",
28: "MANAGE_ROLES",
31: "USE_APPLICATION_COMMANDS",
40: "MODERATE_MEMBERS",
51: "PIN_MESSAGES",
}
NEED_2FA = {1, 2, 3, 4, 5, 13, 28}
arg = sys.argv[1]
if arg.startswith("http"):
arg = parse_qs(urlparse(arg).query).get("permissions", ["0"])[0]
value = int(arg)
for bit in range(64):
if value >> bit & 1:
name = FLAGS.get(bit, "表にないビット")
mark = " ※2FA対象" if bit in NEED_2FA else ""
print(f"1 << {bit:2d} {name}{mark}")
招待URLをそのまま渡すと、含まれる権限が1行ずつ出ます。
$ python perms.py "https://discord.com/oauth2/authorize?client_id=123&permissions=1099511704576&scope=bot"
1 << 10 VIEW_CHANNEL
1 << 11 SEND_MESSAGES
1 << 13 MANAGE_MESSAGES ※2FA対象
1 << 16 READ_MESSAGE_HISTORY
1 << 40 MODERATE_MEMBERS
この例はメッセージ削除とタイムアウトを求めるモデレーション系Botの典型です。JavaScriptで同じ計算を書く場合は注意が要ります。1 << 51のようなシフト演算は32ビットに切り詰められて別の値になるため、BigIntで扱ってください。
管理者権限を要求するBotを入れない判断と代わりに渡す権限の組み合わせ
Permissionsのドキュメントは管理者権限(1 << 3、値は8)を「すべての権限を許可し、チャンネルの権限上書きを無視する」と説明しています。非公開チャンネルを作って閲覧を絞っても、管理者権限を持つBotには届きません。社内の相談窓口や人事のチャンネルを置いているサーバーに、管理者権限のBotを入れるのはやめてください。
Botの用途ごとに、必要な権限はおおむね次の組み合わせで足ります。
| Botの用途 | 渡す権限 | permissions値 |
|---|---|---|
| 通知・コマンド応答 | チャンネルを見る・送信・埋め込み・履歴 | 84992 |
| 画像やファイルを返す | 上記+ファイル添付 | 117760 |
| 荒らし対策・モデレーション | 見る・送信・履歴・メッセージ管理・タイムアウト | 1099511704576 |
| ピン留めの自動化 | 通知・コマンド応答の4つ+ピン留め | 2251799813770240 |
既製Botが管理者権限を既定で求めてくる場合も、認可画面でチェックを外して入れられます。外した結果動かない機能が出たら、その機能に要る権限だけを後からロールで足す順番が安全です。モデレーション系の既製Botで権限をどう絞るかはVortex Supportとは|特徴と導入前に知っておきたいポイントに実例があります。
2026年2月23日の権限分割でピン留めが失敗するBotの見分け方
公式の変更履歴によると、2025年11月24日に権限の分割が告知され、2026年2月23日から有効になりました。ピン留めはPIN_MESSAGES(1 << 51)、低速モードの回避はBYPASS_SLOWMODE(1 << 52)として、メッセージ管理などから切り出されています。
影響を受けるのは、以前はメッセージ管理の権限だけでピン留めしていたBotです。古い招待リンクのまま入れると、ピン留めだけが権限不足で失敗します。上のスクリプトで招待URLを分解し、1 << 51が無いのにピン留め機能をうたうBotなら、入れた後にBotのロールへピン留めの権限を足してください。
サーバー追加とユーザー追加の違い|インストール先で使える範囲が変わる
現在のDiscordでは、Botを「サーバー」ではなく「自分のアカウント」へ追加する選択肢があります。追加先を間違えると、入れたはずのBotがメンバー一覧に見当たりません。
ユーザーインストールではBotがメンバー一覧に現れない仕様と向く用途
Application Resourceのドキュメントでは、ユーザーへインストールしたアプリは認可した本人にだけ見え、サーバー固有の権限を必要としないと説明されています。招待URLのintegration_typeでは、0がサーバー、1がユーザーへのインストールです。
ユーザーインストールのBotは、サーバーのメンバーにはなりません。自分が参加している各サーバーやDMで、自分だけがそのBotのコマンドを呼べる形です。Application Commandsのドキュメントにある利用場所の区分も、サーバー内(0)、BotとのDM(1)、グループDMなど(2)に分かれ、2はユーザーインストールのときだけ有効になります。サーバー全員に通知を流したい、メンバーの入退室に反応させたい、という用途ならサーバー追加を選んでください。自分用の翻訳や検索のBotならユーザー追加で足ります。
自作Botを配る前にInstallationページで既定の招待設定を固める手順
自作Botを他人に入れてもらうなら、手組みのURLを配るよりDeveloper PortalのInstallationページで設定を固めるほうが崩れません。手順は次のとおりです。
- Installation Contextsで、サーバー(Guild Install)とユーザー(User Install)のどちらを許すかを選ぶ
- Install Linkを「Discord Provided Link」にする
- Default Install Settingsで、サーバー向けのスコープに
bot、権限に必要な最小限を指定する - 表示された短縮リンクを配布ページに置く
Discord Provided Linkは、スコープと権限をDefault Install Settingsから取る仕組みです。権限を見直したときにリンクを配り直さずに済みます。ユーザーインストールを許した後にコマンドを追加する場合、既存コマンドの利用場所の設定を更新しないと新しいコンテキストで出てこない点も覚えておいてください。
入れた後に動かない場合の確認順序|ロール・チャンネル権限・コマンド表示
入れた直後の不具合は、Botの不調よりサーバー側の設定で起きます。上から順に見ていけば、たいてい3つ目までで原因に当たります。
Botのロールが下位にあると削除やロール付与が失敗するロール階層の制約
Permissionsのドキュメントには、Botがキック・BAN・ニックネーム変更をできるのは、自分の最上位ロールより下のロールを持つユーザーに対してだけ、とあります。ロールの付与も同じ考え方で、Bot自身より上のロールは扱えません。
Botを入れると、Bot名のロールがロール一覧の下のほうに自動で作られます。認証Botや自動ロール付与のBotが「権限は渡したのに動かない」とき、原因の大半はこの位置です。サーバー設定のロール画面で、Botのロールを付与させたいロールより上へドラッグしてください。
特定チャンネルだけ反応しない場合のチャンネル個別権限と難読化
一部のチャンネルでだけ黙るなら、チャンネル個別の権限上書きを疑います。非公開チャンネルは@everyoneの閲覧を拒否しているため、Botのロールにも閲覧を明示的に許可しないと届きません。
この扱いは2026年に厳しくなります。変更履歴によると、2026年8月12日に告知されたチャネル難読化が11月16日に必須化され、BotはVIEW_CHANNELを持たないチャンネルを、Gatewayでは名前を伏せた形でしか受け取れず、HTTP APIのチャンネル一覧からは除外されます。投稿先をチャンネル名で探すBotは、閲覧権限が無いチャンネルを見つけられなくなる。入れた後にチャンネル一覧の設定を求めるBotなら、対象チャンネルでBotのロールに閲覧が付いているかを先に確かめてください。
スラッシュコマンドを使えるメンバーを連携サービスの設定で絞る方法
Botを入れると、サーバー設定の「連携サービス」にそのBotが現れます。ここでコマンドごとに、使えるロールやチャンネルを上書きできます。Application Commandsのドキュメントにあるdefault_member_permissionsは開発者が決める初期値で、管理者はそれを連携サービスの画面で変えられる関係です。
同じドキュメントによれば、コマンド権限の変更にはユーザーのBearerトークンが要り、Botトークンでは書き換えられません。Botが自分で利用範囲を広げることはできない設計なので、BAN系のコマンドを管理者ロールだけに絞る設定は、入れた当日に済ませておくと安心です。
招待したのにBotがオフラインのままのときに確かめるAPIの応答
メンバー一覧にBotが表示されてもオフラインなら、サーバー側ではなくBotのプロセスが動いていません。既製Botなら提供元の障害、自作Botなら起動していないかトークンが失効しています。自作Botの場合は、Botが参加しているサーバーをAPIで直接確かめると切り分けが早く済みます。
curl -H "Authorization: Bot $DISCORD_TOKEN" \
https://discord.com/api/v10/users/@me/guilds
応答のJSONに追加先サーバーのIDがあれば、招待は成功していてプロセス側の問題です。401ならトークンの失効、空の配列なら招待が完了していません。起動からホスティングまでの手順は作成手順の記事の工程4以降にまとめてあります。
業務サーバーにBotを入れるかの判断基準|外部Botを見送る条件と自作の線引き
趣味のサーバーなら気軽に試してよいBotも、業務で使うサーバーでは入れる前に止まる場面があります。ここは言い切ります。
メッセージ本文を読む外部Botを業務サーバーへ入れない具体的な場面
通常のメッセージ本文を読むBotは、Gatewayのリファレンスで特権インテントに指定されたMESSAGE_CONTENTを使っています。Botが参加しているチャンネルの発言は、提供元のサーバーへ流れると考えてください。
顧客名や見積額が飛び交うチャンネルがあるサーバーに、運営元や保存先を確認できない外部Botを入れるのは見送ります。どうしても機能が必要なら、閲覧を許すチャンネルをBot用の1つに限定して入れる。それもできないなら入れない、が結論です。通知を流したいだけなら、Botを入れずにIncoming Webhookとは|仕組みとSlack・Discordでの使い方で済みます。
社内システムとの連携が絡む場合に既製Botから自作へ切り替える判断
既製Botで足りるのは、モデレーション、ロール付与、定型の通知のように、Discordの中で完結する機能です。勤怠や在庫のデータを参照して返す、問い合わせを社内の管理画面へ起票する、といった要件が入った時点で、既製Botの設定画面では表現できなくなります。
その場合は自作Botに切り替え、権限は上の表の最小構成から始めるのが筋です。既製Botとの損益分岐はDiscord Botの仕組みと作り方|既製Botと自作の判断基準を実装視点で解説で詳しく扱っています。社内システムのAPIとDiscordをつなぐ設計から相談したい場合は、API開発・システム連携で承っています。
よくある質問
Discord Botの入れ方について、検索で多く見られる質問に答えます。
スマホからでもDiscord Botを入れられますか?
入れられます。配布元の招待リンクをスマホのブラウザかDiscordアプリで開くと、パソコンと同じ認可画面に進み、追加先サーバーの選択と権限の確認を経て追加が完了します。ただし、追加先の候補に出るのはサーバー管理の権限を持つサーバーだけという条件は同じです。ロールの並べ替えなど入れた後の設定は画面が狭く操作しづらいため、パソコンで行うほうが確実です。
追加先のサーバー一覧に自分のサーバーが出てこないのはなぜですか?
そのサーバーでサーバー管理(MANAGE_GUILD)の権限を持っていないためです。公式ドキュメントで、サーバーへのインストールはこの権限を持つメンバーの認可が必要と定められています。オーナーか管理者に招待リンクを渡して追加してもらってください。別のアカウントでログインしている場合も一覧が変わるので、ブラウザ側のDiscordのログイン状態も確かめると切り分けが早く済みます。
入れたBotの権限は後から変更できますか?
できます。Botを入れると自動で作られるBot名のロールの権限を、サーバー設定のロール画面で付け外しするだけです。招待し直す必要はありません。チャンネルごとに制限したい場合は、各チャンネルの権限設定でBotのロールに上書きを入れます。権限を足すときは、招待URLを分解して元の要求と比べてから足すと、渡しすぎを防げます。
入れたDiscord Botを削除するにはどうすればよいですか?
メンバー一覧でBotを右クリック(スマホは長押し)して、キックを選べばサーバーから外れます。サーバー設定の連携サービスからも外せます。キックするとBotのロールも消えるので、再度入れたときはロールの位置と権限を設定し直してください。ユーザーインストールしたBotは、サーバーではなく自分のアカウント設定の認証済みアプリから外す必要があります。
Discord Botを入れると個人情報を見られることはありますか?
Botが見られる範囲は、渡した権限とインテントで決まります。閲覧を許したチャンネルの発言は読まれうるため、本文を読むBotには閲覧できるチャンネルを絞ってください。メンバー一覧の取得もGUILD_MEMBERSという特権インテントが前提で、2026年6月の変更以降は1万ユーザーを超えるBotが審査と年1回の再申請の対象です。運営元が不明なBotを、機密を扱うチャンネルに入れないのが基本です。
関連記事
- Discord Botの仕組みと作り方|既製Botと自作の判断基準を実装視点で解説:Gateway常時接続とHTTP応答の違い、既製Botと自作の損益分岐
- Discord Botの作り方|アプリ登録から24時間稼働までを手順どおりに:入れる前のBot作成とコード、24時間稼働までの手順
- Vortex Supportとは?特徴と導入前に知っておきたいポイント:既製のモデレーションBotを入れる場合の実例
- Slack・Discord・LINEの違い|料金・通話・セキュリティと用途別の選び方:業務でDiscordを選ぶ前段のツール比較
- Discord MCPの使い方|Claude Code公式プラグインとMCPサーバーの選び方・設定手順:AIエージェントからDiscordを操作する選択肢