discord.jsが11.xから12.xにアップデートされたので自分が引っかかりまくった点をサクッと書いていきます
Nodejsとdjsのバージョン
discord.js 12.xからはどうやらnodejs 12.xからじゃないと出来ないっぽくて見事にハマってました
自分はちょっと都合でnodejs8.10くらいを使ってまして、discord.jsを入れてbotを起動させようとしたら謎の場所でエラー吐いてまして…色々調べてたらバージョン関係で使えなかったことがわかって仕方なくnodejsとnpmを最新版にして使いました
djsの仕様変更
色々と変わったので自分が知ってる限りの仕様変更部分をまとめます。
xxxs系
xxxs系は<client>.channels
や<message>.guild.roles
などの複数の情報が入ってるやつです。
11.xでは<client>.guilds.get('channelId')
などで出来たのですが、最新版になって<client>.guilds.**cache**.get('channelId')
と、cacheをつけないとArrayとして認識されなくなれました(xxxsはmanager系になってました、それでcacheにCollection系が移動されたんだと思います。)
ボイス系
ボイス系は<message>.member.voice
です
前のバージョンは<message>.member.voiceChannel.join()
とかだったと思うんですけど、最新版だと<message>.member.voice.channel.join()
になってます。
あとはモジュールの変更ですかね
旧モジュール:
node-opus, ffmpeg-binaries
新モジュール:
@discordjs/opus, ffmpeg-static
opusscriptはまだ使えるかは不明。
追記(2020/3/31)
メッセージ関連
最新版djsになって、メッセージを送信する時のやつが完全に消えました
const ch = <message>.channel;
ch.sendCode();
ch.sendEmbed();
ch.sendFile();
ch.sendFiles();
ch.sendMessage();
これは11.xでもDEPRECATEDが付いていたので多分知ってた人は知ってたと思います。
ついでに、基本メッセージ送信は<message>.channel.send();
です、リプライは<message>.reply();
です。
message系に関して
embedのRichEmbed
がMessageEmbed
に変更されています。
自分的にはこれ使うよりオブジェクト型で書いた方が直感的かなーと思ってたりしてます
<message>.channel.send({
title: 'Hello',
description: 'Discord.js!'
});
こんな感じの書き方があるのでぜひこの書き方をおすすめしたい
※ 4/5追記
<message>.channel.fetchMessages()
は最新版では消えてます、多分<message>.channel.messages.fetch()
に移動されてるのでmessages.fetch()の方を使いましょう。
おわり
自分が見てきたとこだとこれくらいですかね、他にもあったような気がするので思い出したら追記しようと思います。