3
3

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 2021-06-13

この記事は何?

自身がDiscord BOTの開発を通して得た、忘れがちな知識をまとめておく記事です。
ご覧になる皆さんにとって、参考になるかは分かりませんが共有しておこうと思います。
内容は、随時更新されます。

なお、サンプルコードなどを載せる際は、基本的にライブラリはdiscord.jsを使用します。

目次

リクエスト系

Create DM

Create DMはDMチャンネルが無くても作成済みでもDM Channelのデータが得られますが、DMチャンネルを新規作成する際に CHANNEL_CREATE イベントは発火しません。

Get Channel Message

Get Channel Messageは基本的にMessageを構成するすべてのデータが手に入りますが、一部のデータは別途取得する必要があります。

Channelのデータ

Channel自体のデータは得られず、channel_idプロパティとしてチャンネルのIDだけが得られます。
ほとんどのライブラリは、Discordへの接続時にチャンネルデータをキャッシュしていて、ライブラリ内でデータを補完するため、気にする必要はありませんが、必要に応じてGET/channels/{channel.id}でデータを別途フェッチして取得する必要があります。

Userのデータ

authorプロパティとして、id username avatar discriminator public_flagsプロパティを含むオブジェクトが得られます。
(対象のユーザがBOT場合のみbotプロパティが含まれす。)
そのため、ギルド内・DM内のメッセージに関わらず、User/Memberのデータどちらの完全なデータを得たい場合でも、別途フェッチして取得する必要があります。

メンションのデータ

mentionsプロパティとしてUserのデータと同様のデータが配列で、mention_rolesプロパティとしてロールのIDが配列で得られます。

Reactionのデータ

reactionsプロパティとして、emoji count meのプロパティを含む全リアクションのオブジェクトの配列が得られます。
更にemojiプロパティは、id nameプロパティを含むオブジェクトが得られます。

なお、リアクションしたユーザーに関するデータは一切含まれないため、必要に応じてGET/channels/{channel.id}/messages/{message.id}/reactions/{emoji}でデータを別途フェッチして取得する必要があります。

イベント系

MESSAGE_REACTION_ADDイベント

リアクションされたメンバーや各種IDのデータが得られますが、Guild、Channel、Message、Roleなどのデータは別途取得する必要があります。

各種IDのデータ

リアクションされたメッセージのguild_id channel_id message_id、リアクションしたユーザーのuser_idが得られます。

User/Memberのデータ

memberプロパティとして、完全なMemberのデータが得られます。
なお、Memberのデータに含まれるuserプロパティは、Userのデータと同様の内容のものが得られます。

Emojiのデータ

emojiプロパティとして、name id プロパティを含むオブジェクトが得られます。

スレッド関係

thread_metadataのlockedプロパティ

設定時間発言が無かった場合に起こる自動アーカイブと スレッドの管理 権限を持たないユーザーによる手動アーカイブでは falseスレッドの管理 権限を持ったメンバーによる手動アーカイブでは true となる。

その他わかっていること

  • スレッドがアーカイブされる時間は正確ではなく、数分ほどのタイムラグがある。

その他

BOTのトークンからIDを取り出す

Discordのトークンは先頭から最初の . までがbase64にエンコードされたBOTのIDになっているので、最初の . 以降を取り除いてデコードすれば元のIDが得られる。

atob('YOUR_BOT_TOKEN'.replace(/\..+/, ''));

トリビア

  • Slash Commandsの使用に、『チャンネルを見る』権限は不要
  • メッセージ内でURLが重複している場合は、同URLに対して1つまでしか埋め込みが表示されない
3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?