Discord Botアカウント初期設定ガイド for Developer

# はじめに

Discord Bot 作成の最初の躓きポイントとして、
アカウントの作成、サーバーへの登録、権限の設定などがありますが、
この記事ではそれらをまとめて解説します。

また、記事内でID等を晒していますが、
削除済みのBotアカウントの情報のため安心してお読みいただけます。

# アカウントの作成

まずは [DEVELOPER PORTAL](https://discordapp.com/developers/applications/) にログインします。

右上の「New application」をクリックします。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/cfa11fd7-55cf-2849-4bc6-df75af34c8e5.png">

モーダルウィンドウが開き、Bot(Application)名の入力を求められるので、
入力して「Create」をクリックします。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/cfa06dc8-67ac-f6db-4395-6f20279c9e98.png">


Bot(Application)アカウントの作成が完了し、
アカウントの管理画面が表示されます。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/fcc44508-d5bf-bca6-a8b7-5bf1103ade22.png">

# アイコンの設定

Bot の顔となるアイコンの設定をしましょう。

アカウント管理画面の APP ICON をクリックして、
アイコン画像をアップロードします。

アップロード時にトリミングはできないので、
事前にちょうどいいサイズに整形しておきましょう。
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/9bbc7e53-0e1f-81e4-bd3d-57c2ac3b8a1c.png">

アップロードが完了したら「Save Changes」をクリックして反映させましょう。
反映後にアイコンを削除したい場合には APP ICON 下の「Remove」から。
<img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/6c4e94a5-6022-b524-a33e-0841985a4904.png">


アイコンの反映が完了すると
「All your edits have been carefully recorded.」
と表示されます。
<img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/81949f7b-94c8-16bc-caca-6d773d54c7f9.png">

# Bot の初期設定

左の SETTINGS 欄の「Bot」をクリックします。

Application を Bot ユーザとして可動させる必要があるため、
「BUILD-A-BOT」右の「Add Bot」をクリックします。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/60142538-10e8-7297-a18f-384313a2400b.png">

「Bot ユーザとして稼働させると二度と元に戻せないよ！」
というメッセージとともにモーダルウィンドウが表示されますが、
問題ないので「Yes, do it!」をクリックします。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/ff23e99b-3d5a-4acf-5d4a-3a8486fd60ec.png">

Botユーザ化が完了すると、
「A wild bot has appeared!」というメッセージが表示され、
Botのユーザハッシュタグ(#3297)やアクセストークンなどが確認できるようになります。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/2f5ded64-4a29-6ebc-a097-b30932bfaf03.png">

# アクセストークンの取得

アクセストークンはプログラムからBotを操作するために必要な文字列です。

「TOKEN」の下の「Reset Token」をクリックするとアクセストークンをコピーできます。
必要な箇所にペーストして使用してください。
(クリックすると以下のようにモーダルウィンドウが表示されます)

<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/72492860-4bb1-1e99-db66-edb84e1c4ccd.png">
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/7fcac9af-bd20-ef33-f72d-40d828f833e5.png">

2段階認証をしている方は以下のようなモーダルウィンドウが表示されるので、
6-digit authentication codeに2段階認証のコードを入力して、
「Submit」をクリックしてください。
(バックアップコードは使用できません。)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/255aae77-dedd-49e6-d2cf-1aee55f65cf9.png)

「Copy」をクリックするとアクセストークンをコピーできます。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/e2eee9a6-cefc-fe34-ae0d-8fc4d71b010e.png">

「Reset Token」からトークンの再発行が可能ですが、
再発行前のトークンが全て無効になるので注意してください。
（クリックすると以下のようにモーダルウィンドウが表示されます）
<img width=60% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/c790d203-9ed5-6713-05f1-0b66b25f3573.png">

<font color="Red">※ アクセストークンは知られるとBotが乗っ取られる危険性が高いため、
必ず誰にも見えない場所に保存してください！
トークンを記述したプログラムを公開して流出するケースが頻発しています。</font>

# サーバへの登録

左の SETTINGS 欄の「OAuth2」をクリックします。
「OAuth2」をクリックしたら SETTINGS 欄の「OAuth2」の下にURL Generatorが表示されるので、
クリックします。
「OAuth2 URL Generator」から、参加させるための認証 URL を発行できます。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/bbbc1705-9c9b-4ba3-a0f6-b81ab2f39420.png">

「SCOPES」内の「bot」にチェックを入れると、
認証 URL が生成されるので Copy をクリックしてコピーします。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/c9f8b58c-fef9-2f04-1310-85800a3d8841.png">

コピーした認証 URL にアクセスすると以下のような画面が開くので、
追加したいサーバーを選択したのち、右下の「認証」をクリックします。
<font color=red>※ 自分が管理者権限を持っているサーバーのみ選択できます。</font>
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/c4cf3e07-a3b3-0652-b4f3-791dd7e868cc.png">

スパム対策のための認証画面が開くので、チェックボックスをクリック。
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/3835d535-7347-f504-d3df-eefcb0f28244.png">

以下のように「認証しました」と表示されれば登録は完了です。
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/1c81343a-c207-532f-2972-3d9d41bb0b72.png">

Discordサーバー側でも参加できていることが確認できます。
<img width="1039" alt="スクリーンショット 2019-04-12 17.50.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/6766dfef-deaf-9b4e-43fc-2a13001eff4c.png">

# Botの権限設定

Bot を Discord サーバーに追加する前と後で設定方法が変わります。

## ロールで権限を設定する

一般ユーザと同じ方法でBotの権限を設定します。

Discordサーバーの設定を開きます。
<img width=40% 2019-05-01 01.54.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/aa75df10-1272-913a-141e-fb1dc2464d70.png">

左のメニューからロールを選び、
ロールリスト右上の＋をクリックして新規ロールを作成します。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/cbc6b690-22ad-e759-09d4-f0f9bc4f98a3.png">

名前と色を設定し、必要に応じて権限をONにしましょう。
とりあえず試すなら管理者をONにしておくのが手っ取り早いと思います。
設定後に「変更を保存する」をクリックするのを忘れずに。
<img width=70% 2019-05-01 02.03.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/8c9dd3f9-6c86-54da-3e73-09a4b98bbdfb.png">

ロールが用意できたら、Botアカウントをクリックしてプロフィールを表示し、
+ボタンからロールを追加しましょう。
<img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/6896a2b8-be13-680d-00fe-880ccc99475c.png">

プロフィールにロール名が表示され、色が反映されたら完了です。
<img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/53bd9bd7-7a26-d2fc-7f9b-9ff2cb930e48.png">

## 認証URLで権限を設定する
「OAuth2」内の「OAUTH2 URL GENERATOR」で、
「SCOPES」内の「bot」にチェックを入れた後、
画面を下にスクロールすると、権限設定が表示されます。

必要な権限にチェックを入れると、認証URLが変化して権限が反映されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/6e0df436-8163-4a10-e98b-f8a7bff8b2ff.png">

権限を設定した認証URLにアクセスすると、以下のような画面が表示されます。
ここで各権限をOFFにすることも可能です。
<img width=30% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/d204f827-4fb4-9996-8c2e-77c57caa27de.png">

DiscordサーバーにBotを追加すると、Botと同じ名前のロールが付与されます。
<img width=40% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/95375ccd-48ca-664a-383f-8fd3fb528517.png">

ロール設定を開くと、このロールについての注意書きが表示されています。
この特殊なロールは他のメンバーに付与したり、削除することはできません。
ただし、権限の変更は通常と同様に可能です。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/062ee8e3-3d5d-d7fe-a25a-f3f425b31a36.png">

## ロールの並び順に関する仕様

Discordサーバーで複数のロールを管理する場合、
<font color=red>どのロールがどの位置にあるかはとても重要です。</font>
単に見栄えだけの問題ではありません。

以下の場合、上から `assistant` `Echidna` `test`
という並びになっていますが、これは
<font color=red>assistant が最も権限が強く、testが最も権限が弱い</font>
ことを意味しています。(everyoneは特殊なので除いています)
<img width=50% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1462118/d5481be0-c2b6-dd29-fd9b-58337c2b7d9b.png">

仮に `test` がロールの管理権限を持っていたとしても、
`assistant` ロールを削除することも、ユーザに付与することもできません。

以上を踏まえて、並び順はよく考えて設定しましょう。

# Botの配布
「サーバへの登録」 にて紹介した認証URLを発行して公開します。
必要な権限も認証URLに設定しておきましょう。

また、「Bot」内の「PUBLIC BOT」がデフォルトでONになっていますが、
これをOFFにすると自分だけが Discord サーバーに Bot 追加できるようになります。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/bf7f3896-f8ba-100d-561b-60cb59f74b6a.png">

# Botの管理

作成した各Bot(Apllication)はDEVELOPERポータルから管理画面にアクセスできます。
必要に応じて適宜設定を更新しましょう。
<img width=80% src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118830/4e09e32a-0522-6498-08a0-eff51a4b51c4.png">

# おわりに
Discord ではユーモアに溢れた様々な文言が表示されるため、
それらを楽しみながら各作業を行えるのが良いところだと思います。
（もちろん英語が読めることが前提ですが）

DEVELOPER PORTAL の UI は頻繁にアップデートされるため、
定期的に確認して記事を更新していきますが、
更新漏れや不備などがあれば編集リクエストやコメントを頂ければと思います。

また、現状では様々な Discord Bot 関連の記事の冒頭で
Botアカウント作成手順の記述が乱立していますが、
以後こちらへのリンクを貼ることで記事の軽量化ができれば幸いです。

# 関連記事
- [Pythonで実用Discord Bot(discordpy解説) - Qiita](https://qiita.com/1ntegrale9/items/9d570ef8175cf178468f)