Discord APIで何ができる？無料で始める活用ガイド

> Discord APIを利用すれば、テキストコマンドに反応するボット作成、サーバー/チャンネル管理、メッセージ送受信ができ、通常は無料です。開発者ポータルでアプリを作成し、Apidogで簡単にAPIリクエストとテストが行えます。

Discordは全世界でも人気のあるコミュニケーションプラットフォームとして、多くのユーザーに利用されています。Discordのサービスを外部アプリと連携させるために、Discord APIを利用する必要があります。本文では、Discord APIができること、利用料金、及び詳細な使い方を皆さんに解説していこうと思います。

## Discordとは
Discordとは、ゲーマーやコミュニティ向けのボイスチャット、ビデオチャット、テキストチャットなどのコミュニケーションプラットフォームです。

![Discord-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/9a81ff2b-e9b2-7db8-4fe7-e15f4af5c531.png)

**主な特徴は以下の通りです。**

- 無料で使用できるクロスプラットフォームアプリ(Windows、Mac、Linux、iOS、Androidなどに対応)
- サーバー内にテキストチャンネルやボイスチャンネルを自由に作成可能
- スクリーン共有機能、ビデオ通話機能があり、ゲームプレイの共有ができる
- ボット機能でさまざまなカスタマイズが可能
- コミュニティサーバーを作ってメンバーを招待できる
- プライベートグループでの会話も可能


主にオンラインゲームのクランやコミュニティ、フレンドグループなどで利用されており、ゲームをプレイしながらのリアルタイムコミュニケーションに適しています。テキストだけでなく音声やビデオでもコミュニケーションができる点が大きな特徴です。

## Discord APIについて
Discord APIとは、DiscordのプラットフォームやサービスにアクセスしてDiscordの機能を拡張したり、カスタマイズしたりするためのプログラミングインターフェースのことです。

Discord APIはREST APIとWebSocket APIの2種類があり、主要なプログラミング言語に対応しているSDKがあります。[OAuth2認証](http://apidog.com/jp/blog/oauth-2-guide/)を使って安全にAPIを利用できます。

つまり、Discord APIを活用することで、Discordを自分のニーズに合わせてカスタマイズしたり、外部アプリと連携させたりすることができます。

## Discord APIでできること
Discord APIを使うと、以下のようなことができます。

### ボットの作成・管理

- テキストコマンドに反応するボットを作成
- ボットにカスタム機能を追加(リアクション、メッセージ送信など)
- ボットの挙動をプログラミングで制御

### サーバー管理

- 新しいサーバーの作成
- サーバーの設定変更(名前、アイコン、チャンネルなど)
- メンバーの招待・役職の割り当て
- 特定のメンバーをBANやキックする

### チャンネル管理

- 新しいテキストチャンネル、ボイスチャンネルの作成
- チャンネル設定の変更(トピック、権限など)
- メッセージの送信、編集、削除

### リソース管理

- カスタム絵文字の追加・削除
- 招待リンクの作成、管理

### WebHookの利用

- 外部アプリからDiscordにメッセージを送信

### 認証と認可

- OAuth2を使ったユーザー認証
- スコープに基づく権限設定

### アクティビティの追跡

- サーバーやチャンネルのメッセージのログ取得

## Discord APIの利用料金

一般的にはDiscord APIは、外部アプリやサービスからDiscordでBotを作成したり、チャンネルを管理したりするために利用されています。そこで、Discordサービスを利用している方なら、**Discord APIを完全無料で利用できます**。

Discordサービスを利用することができますが、有料プランのNitro BasicとNitroというサービスも提供しています。Nitroサービスを購読することで、より大きなビデオや画像をシェアしたり、カスタム絵文字やスーパーリアクションを利用したりすることができるようになります。

**Discord Nitroの料金プランについて：**

https://discord.com/nitro

## Discord APIの使い方を完全に解説
それでは、Discord APIを利用して、自分のアプリやサービスをDiscordに連携するために、どうやって始めれば良いのでしょうか？次は。Discord APIの利用の使い方を詳しく解説していこうと思います。

### ステップ⒈Discordの開発者向けページにアクセス

[Discordの開発者向けページ](https://discord.com/login?redirect_to=%2Fdevelopers)にアクセスします。ここで、Discordアカウントでログインします。まだDiscordのアカウントをお持ちでない場合、まずはサインアップする必要です。

![Discord-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/eb25676b-8f1e-b133-d92c-5092b5f661f9.png)


### ステップ⒉Discordアプリを新規に作成
Discordの開発者ポータルサイトにログインすると、ここで「New Application」を選択して、Discord アプリを新規に作成します。

![discord-new-application-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/5e473ad5-afc5-6fcf-2877-24b54f878bd9.png)



### ステップ⒊ アプリの名前をつける
ここで新規のアプリの名前を付けて続行します。

![discord-create-new-application-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/cbbdbd86-3ee4-64fc-63e1-bbda207d2d7d.png)


### ステップ⒋Client IDとClient Secretを取得
左側メニューから `OAuth2` セクションで、Client IDとClient Secretを取得することができます。

![discord-oauth-client-id-secret-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/0e481e01-d53a-a9dd-4481-7dc45d0ec504.png)

ここでredirect URLを追加する必要があります。このURLを追加しなければ、Discord APIが利用できません。ここで、追加の例として、`http://localhost/discord/redirect` をredirect URLに設定します。

### ステップ⒌Discordアプリの認証リンクを生成
Discord APIにリクエストを送信するために、認証が必要です。OAuth2セクションで画面を下にスクロールして、「OAuth2 URL Generator」があります。

![discord-generate-invitation-url-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/d4e4f315-e8db-bfd6-588e-adab7ef1cfa1.png)



ここで、Scopes（APIができる操作）を設定します。例えば、認証用だったら、「**identify**」をチェックします。

そして、redirect URLを設定した上、生成したリンクをコピーします。このリンクをブラウザに入力して、次のような認証ページが表示されます。

![discord-approve-application-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/acf63835-0d0f-d3dd-47c1-084b099ae97a.png)

ここで「**Authorize**」ボタンをクリックして、認証済のURLを保存します。この認証済のURLは次のような形になっています：

`http://localhost/discord/redirect?code=dVDSfa7lff41EervKcDHgelVXJdZnw`

Discord APIを実装するために、上記の `code` パラメータを保存する必要があります。上記のURLのサンプルでは、codeパラメータの値が `dVDSfa7lff41EervKcDHgelVXJdZnw` になります。このパラメータは、Discord APIのアクセストークンを取得するために利用される必要があります。

### ステップ⒍Discord APIのアクセストークンを取得
Discord APIのアクセストークンを取得するために、次のAPIエンドポイントにリクエストを送信して、上記で取得したデータを渡す必要があります。

- `https://discord.com/api/oauth2/token`

ここで最も使いかやすいAPI管理ツールの[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)を利用して、簡単にデータをDiscord認証用エンドポイントに渡し、簡単にアクセストークンを取得できます。次のcurlコマンドをApidogにインポートして、すぐにリクエスト情報を導入して、直感的なUIでAPIをテストしたり、管理したりすることができます。

![apidog-discord-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/e25ced8f-7254-a8c0-cbe3-66e1b297a486.png)

```
curl -i -X POST \
   -H "Content-Type:application/x-www-form-urlencoded" \
   -d "client_id=${CLIENT_ID}" \
   -d "client_secret=${CLIENT_SECRET}" \
   -d "grant_type=authorization_code" \
   -d "code=${CODE}" \
   -d "redirect_uri=${REDIRECT_URL}" \
 'https://discordapp.com/api/oauth2/token'
 ```

 **HTTPメソッド**: POST | **Content-type**: x-www-form-urlencoded

- **client_id**: "ステップ4で取得したClient ID"
- **client_secret**: "ステップ4で取得したClient Secret"
- **grant_type**: "authorization_code"
- **code**: "ステップ5で取得したCodeパラメータ"
- **redirect_uri**: "http://localhost/discord/redirect"


ここで正しいデータが含まれるリクエストを送信すると、次のようなアクセストークンを取得することができます。

![apidog-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/6f8068d4-4981-479d-e122-9679aea946a6.png)


## Apidogで便利にDiscord APIを管理＆テスト

上記のガイドを参照して、Discord APIのアクセストークンを取得すると、このアクセストークンを利用することで、Discord APIを利用してDiscordサービスに連携して、外部のアプリからさまざまな操作を行うことができるようになります。具体的に実現できる操作は、次のページからDiscord API仕様書をご確認ください。

https://discord.com/developers/docs/resources/guild

次のように、ユーザーIDの取得及びメンバーの削除といった２つの操作を行うには、[cURLコマンド](http://apidog.com/jp/blog/curl-user-guide/)を使ってそれを簡単にApidogにインポートできます。そして、直感的なUIでAPIをテストしたり、リクエストを送信したりすることができます。また、[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)でリクエストを送信してレスポンスを取得すると、リクエストを保存することもできます。

![apidog-discord-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/4a1d1f8b-e0a9-4483-7f4a-d50d5536b292.png)

### ユーザーIDの取得
```
curl -i -X GET \
   -H "Authorization:Bearer ${ACCESS_TOKEN}" \
 'https://discordapp.com/api/users/@me'
 ```

### メンバーを削除
```
curl -i -X DELETE \
   -H "Authorization:Bot ${BOT_TOKEN}" \
 'https://discordapp.com/api/guilds/${GUILD_ID}/members/${USER_ID}'
 ```

 というように、[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)というツールを使えば、Discord APIをはじめ、自社が利用する他のAPIも一元的に管理できるようですね。[APIの結合テスト](http://apidog.com/jp/blog/api-integration-test/)ができるのは便利な機能です。
 ![apidog-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3877124/5e9da7c6-4dbc-dcf1-f15d-fb75ce01ea9f.png)

APIを利用してサードパーティのサービスやプラットフォームと自社システムを連携させる場合、APIの動作確認やテストは非常に重要です。[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)のようなツールで一元的にAPI管理し、UIからリクエストを送ってレスポンスを確認できれば、開発が効率化されると考えられます。

## まとめ
本記事では、Discordの人気コミュニケーションプラットフォームとその外部アプリ連携のためのDiscord APIについて詳しく解説しました。Discord APIを利用することで、テキストコマンドに反応するボットの作成、サーバー/チャンネルの管理、メッセージの送受信、カスタム絵文字の追加など、さまざまな機能をプログラミングでカスタマイズできます。一般的にDiscordサービスを利用している場合、Discord APIは完全無料で利用できます。

Discord APIを使い始めるには、Discord開発者ポータルでアプリを作成し、Client ID/Secretを取得する必要があります。OAuth2認証を経て、アクセストークンを取得できます。[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)のようなツールを活用すれば、DiscordAPIへのリクエスト送信、レスポンスの確認、APIの一元管理などが直感的にできます。

APIを介してサードパーティサービスと自社システムを連携させることで、より価値の高いサービスを提供できます。Discordのようなプラットフォームと連携するために、Discord APIの活用は有効な選択肢になるでしょう。APIの動作確認や結合テストに[Apidog](http://www.apidog.com/jp/?utm_source=opr&utm_medium=a2takuya)などの専用ツールを使えば、開発がより効率化されます。

**今回は以上になります！
最後まで見ていただきありがとうございました！
では、また次の記事で～！**