Help us understand the problem. What is going on with this article?

Discord.js v12がリリースされたので追加されたものを一部紹介

とうとうこの日が来ました。Discord.js v12がリリースされました。🎉
Discord.jsユーザーの9割はこの時を待ち望んでいたでしょう!ということでDiscord.jsの新機能というか、追加された一部分を紹介します。

Discord.js とは

Discord.jsは、Discord APIと簡単にやり取りできる強力なNode.jsモジュールです。
https://discord.js.org/#/

v12のリリースまでに凄く時間がかかっている。

このv12ですが結構前から開発が進んでいたものをリリースしたものです。破壊的変更が大量にあります。
v11のコードをそのまま動かすとほぼ確定でエラーが起きるでしょう。
そしてこの記事を読んでも1割、いや1割以下しか理解したことにならないでしょう...

Node.jsのアップデートが必要

今回のv12リリースで、Node.jsのバージョンはv12.x以降となりました。node -vコマンドでNode.jsのバージョンを確認して必要ならNode.jsの公式サイトからダウンロードして更新しましょう。

追加されたものの紹介

Discord.jsのオブジェクトを自由に拡張できる - Structuresクラス

公式ドキュメント: https://discord.js.org/#/docs/main/stable/class/Structures

過去にこちらの記事で書いてありますが改めて紹介します。

MessageやGuildなどのオブジェクトに、関数やプロパティを自由に追加することが可能になります。例えばユーザーのデータを取得するために一々モジュールをインポートしてー... なんてことも、これがあればユーザーオブジェクトからデータを取得して...ということができます。

注意点は、Clientをインスタンス化する前に拡張の処理を済ませること

コード

const { Structures, Client } = require('discord.js')

Structures.extend('Guild', Base => class extends Base {
  getGuilds () {
    return this.client.guilds
  }
})

const bot = new Client()

bot.on('guildCreate', guild => {
  console.log(guild.getGuilds().cache.size)
})

bot.login()

使い道がよくわからない人のために実際にこの機能を使ったコードをGitHubに公開しておきました。

Server Boostに対応 - Premium Guild

Server Boost(Nitro Boost)が使われているサーバーのレベルなどを取得できるようになりました。

Guild

プロパティ 返り値 説明
.premiumSubscriptionCount number または undefined サーバーをブーストしている人の人数
.premiumTier PremiumTier ブーストのレベル(返り値の詳細はこちら
PremiumTier
  • 0 ブースト無し
  • 1 ブーストレベル1
  • 2 ブーストレベル2
  • 3 ブーストレベル3

GuildMember

メンバーがいつサーバーをブーストしたかを取得することが可能です。

プロパティ 返り値 説明
.premiumSince Date または undefined メンバーがブーストした時をDateオブジェクトで返します。
.premiumSinceTimestamp number または undefined メンバーがブーストした時を数値で返します。

画像形式やサイズを指定できるようになった。

guild.iconURLはプロパティでしたが、guild.iconURL()というメソッドに変更されました。
よって

guild.iconURL({ format: 'png', dynamic: true, size: 1024 })

こういう書き方ができるようになり、画像形式、サイズの指定ができるようになったわけです。これでwebp形式の画像が表示できないiOS版Discordの対応ができるというわけです。
ちなみにiOS版Discordに対応するためにはこのオプションにしておくといいです。

guild.iconURL({ format: 'png', dynamic: true })

dynamicオプションが有効だと、アニメーション画像はGIF形式の画像URLを受け取り、それ以外はPNG形式の画像URLを受け取ります。(デフォルトだとwebp形式で受け取ります。)

displayAvatarURLavatarURLsplashURLも同様のオプションが使用できます。

v11からv12にするために

現在公式ガイドの翻訳が進んでいる。こちらのサイトを見るのが良いでしょう。今後この記事で詳しく書くかもしれません。

この記事が作成された日にリリースされたのでまだv12の情報はほとんど無いと思われます。もしv11からv12への移行で困っていることがあれば、日本語のコミュニティを活用したり、ドキュメントを見たほうがいいでしょう。

まだまだ更新していくのでストックしておくといいかも?

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした