6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DiscordのAPIでサーバーに招待したりサーバーから退出させたりする方法

Last updated at Posted at 2020-05-20

#使い方
##1.applicationを作成
https://discordapp.com/developers/applications
の右上のNew Applicationで登録

General Informationページでclient_idとclient_secretを取得できる

##2.Botアカウントを作成
参考
https://discordpy.readthedocs.io/ja/latest/discord.html

Botアカウントを作成し、アクセストークンを取得。

利用するチャンネルにBotを招待し、必要な権限を与える。

##3.APIの呼び出し方

baseURL
https://discordapp.com/api
header
{Authorization: Bot 取得したボットトークン}

のようにボットトークンをヘッダーで送る。

#APIでできること(一部のみ)

##チャンネル系
###・チャンネル招待リンクURL作成

参考
https://discordapp.com/developers/docs/resources/channel#create-channel-invite

API
POST https://discordapp.com/api/channels/{channel.id}/invites
bodyパラメータ
{
"max_uses":1,  //招待コードを1回のみ有効にする。
"unique":true  //発行する度に新しい文字列の招待コードを発行する。
} 
response
{
"code": "リンクのコード"
"その他":"その他"
}
招待リンクURL
`https://discord.gg/${responsebody.code}`

##サーバー系

###・サーバーから退出させる
チャンネルから退出させるAPIはなさそう。。。

Remove Guild Member
https://discordapp.com/developers/docs/resources/guild#remove-guild-member

API
DELETE https://discordapp.com/api/guilds/{guild.id}/members/{user.id}

###・サーバーに追加する

注)チャンネル自体に登録するAPIはない。
privateチャンネルに登録したければ、サーバーに追加する際にそのチャンネルを閲覧できる権限を与えればよい。

1.codeの取得
以下のAPIを呼び出し、画面上でユーザにIDとパスワードを入力してもらう

API
GET https://discordapp.com/api/oauth2/authorize?
client_id=  クライアントID
&redirect_uri= リダイレクトURL
&response_type= code
&scope=guilds.join
リダイレクトURL
http://指定したリダイレクトURL?code= コードの文字列

2.access_tokenの取得

上記codeを使って以下のAPIを呼びたしアクセストークンを取得する。

API
POST https://discordapp.com/api/v6/oauth2/token
header
{Content-Type:application/x-www-form-urlencoded}
body(multipartで送る?)
{
grant_type:authorization_code,
code: 取得したコード,
redirect_uri: リダイレクトURL,
scope:guilds.join"
}
response例
{
  "access_token": "",
  "expires_in": 604800,
  "refresh_token": "",
  "scope": "guilds.join",
  "token_type": "Bearer"
}

3.guildに追加

Add Guild Member
https://discordapp.com/developers/docs/resources/guild#add-guild-member
注)追加したいギルド内で'CREATE_INSTANT_INVITE'の権限を持つボットのトークンが必要

API
PUT https://discordapp.com/api/guilds/{guild.id}/members/{user.id}
header
{Authorization: Bot ボットトークン}
body
{
"access_token"(required): 取得したaccess_token,
  "roles": [ロールのID],    guild内のロールを付与する
}
response例
{
  "user": {
    "id": "",
    "username": "",
    "avatar": null,
    "discriminator": "",
    "public_flags": 0
  },
  "roles": [],
  "nick": null,
  "premium_since": null,
  "mute": false,
  "deaf": false,
  "joined_at": ""
}

###・ロールを付与する
Add Guild Member Role
https://discordapp.com/developers/docs/resources/guild#add-guild-member-role

API
PUT https://discordapp.com/api/guilds/{guild.id}/members/{user.id}/roles/{role.id}

###・ロールを剥奪する
Remove Guild Member Role
https://discordapp.com/developers/docs/resources/guild#remove-guild-member-role

API
DELETE https://discordapp.com/api/guilds/{guild.id}/members/{user.id}/roles/{role.id}

##ユーザー
###・ユーザのuserIDを取得する方法

1.codeを追加
以下のAPIを呼び出し、画面上でユーザにIDとパスワードを入力してもらう
参考
https://discordapp.com/developers/docs/topics/oauth2#authorization-code-grant

API
GET https://discordapp.com/api/oauth2/authorize?
client_id=  クライアントID
&redirect_uri= リダイレクトURL
&response_type= code
&scope=identify
リダイレクトURL
http://指定したリダイレクトURL?code= コードの文字列

2.アクセストークンを取得
上記codeを使って以下のAPIを呼びたしアクセストークンを取得する。

API
POST https://discordapp.com/api/v6/oauth2/token
header
{Content-Type:application/x-www-form-urlencoded}
body
{
grant_type:authorization_code,
code: 取得したコード,
redirect_uri: リダイレクトURL,
scope:identify
}
response
{
access_token: トークン
その他:その他
}

3.ユーザー情報を取得
トークンを用いてget current userAPIでユーザ情報を取得する
参考
https://discordapp.com/developers/docs/resources/user#get-current-user

API
GET https://discordapp.com/api/users/@me
header
{Authorization:Bearer 取得したトークン}
response
id:ユーザID
その他:その他

#モジュールについて
js
https://discord.js.org/#/docs/main/stable/general/welcome

python
https://discordpy.readthedocs.io/ja/latest/

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?