とうとうこの日が来ました。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形式で受け取ります。)
displayAvatarURL
やavatarURL
、splashURL
も同様のオプションが使用できます。
v11からv12にするために
現在公式ガイドの翻訳が進んでいる。こちらのサイトを見るのが良いでしょう。今後この記事で詳しく書くかもしれません。
この記事が作成された日にリリースされたのでまだv12の情報はほとんど無いと思われます。もしv11からv12への移行で困っていることがあれば、日本語のコミュニティを活用したり、ドキュメントを見たほうがいいでしょう。
まだまだ更新していくのでストックしておくといいかも?