discord.js的最新版本中的陷阱(私人备忘录)

由于discord.js从11.x版本升级到12.x版本,我会简要地记录下我遇到的一些问题。

Node.js和djs的版本

听说 discord.js 12.x 只能在 nodejs 12.x 上运行,结果我卡在这个问题上了。由于某种原因,我正在使用 nodejs8.10,并尝试安装 discord.js 启动机器人,结果在一个神秘的地方出现了一个错误… 我进行了各种调查,发现这是由于版本不兼容造成的,于是我不得不将 nodejs 和 npm 更新到最新版本来使用。

DJS的规格更改

由于一些改变,我将总结出我所了解的规格更改部分。

只需提供一个选项,以下是对“xxxs系”的中文本地化释义:

– xxxs(这里用中文的适当词汇替代xxx)的体系。

xxx系是存储了多个信息的对象,比如.channels和.guild.roles等。
在11.x版本中,可以通过.guilds.get(‘channelId’)等来实现,但是在最新版本中,需要加上cache,即.guilds.**cache**.get(‘channelId’),不加cache会被识别为数组(我认为这是因为xxx系已经变成了manager系,所以cache被移动到了Collection系中)。

语音类

“ボイス系” is .member.voice.
In the previous version, I think it was .member.voiceChannel.join(), but in the latest version, it has become .member.voice.channel.join().
Also, there is a module change.
Old modules:
node-opus, ffmpeg-binaries
New modules:
@discordjs/opus, ffmpeg-static
It is unclear if opusscript can still be used.

续记(2020年3月31日)

消息相关 (Xiaoxi guanlian)

最新版本的DJS,发送消息时那个功能完全消失了。

const ch = <message>.channel;
ch.sendCode();
ch.sendEmbed();
ch.sendFile();
ch.sendFiles();
ch.sendMessage();

我认为有人可能已经知道,因为即使在11.x版本中,这个功能也已被标记为“废弃”。

顺便提一下,基本的消息发送方法是.channel.send();,回复消息则是.reply();。

关于message系

embed的RichEmbed已被更改为MessageEmbed。

我个人觉得用对象类型写可能更直观一些。

<message>.channel.send({
  title: 'Hello',
  description: 'Discord.js!'
});

因为有这样的写法,所以我强烈推荐你采用这种写法。

※ 在4/5的追記中,
`.channel.fetchMessages()`已经被删除了,可能已经被移动到`.channel.messages.fetch()`中,所以我们应该使用`messages.fetch()`。

结束

就我所见,大概就这样了吧,感觉还有其他的地方,如果我想起来了就再添加。

请参阅

discord.js can be paraphrased in Chinese as “Discord 的 JavaScript 库” or “Discord 的 JS 库.”

广告
将在 10 秒后关闭
bannerAds