Discord.js (v12)のStructuresクラスの紹介をしたいと思います。
注意
これから紹介する機能は、v13.0.0で削除されました。
- Discord.jsのバージョンは
11.5.1
ではなく12.0.0-dev
- 開発途中のバージョンで更新が活発(大きな変更には注意しよう)
- Node.jsのバージョンは
10.0.0
以上であること(安定版は6.0.0
以上)
インストール
npm
npm install discordjs/discord.js
どうやって拡張するの?
ドキュメントの例を見ればすぐに分かると思います。
const { Structures } = require('discord.js');
Structures.extend('Guild', Guild => {
class CoolGuild extends Guild {
constructor(client, data) {
super(client, data);
this.cool = true;
}
}
return CoolGuild;
});
これはGuildオブジェクトにcool
というメンバ変数を追加しています。よって
bot.js
const { Structures, Client } = require('discord.js');
Structures.extend('Guild', Guild => {
class CoolGuild extends Guild {
constructor(client, data) {
super(client, data);
this.cool = true;
}
}
return CoolGuild;
});
const client = new Client();
client.on('message', (message) => {
if (message.guild.cool) console.log('このサーバーはクール!')
})
こんなことができるようになる。
拡張するときの注意
Clientのインスタンスを作る前に拡張しなければならない
ドキュメントにも書いてありますが、Clientのインスタンスを作る前に拡張しなければなりません。
参考
あとがき
サンプルコードが雑すぎて凄さが伝わらないような気もするけど()
ちなみに他のオブジェクトも拡張できるよ!これを使っているフレームワークのklasaとか結構参考になると思う。
TypeScript使ってる場合は型定義を書く必要がある。