以下是人们在 Discord.js v12 中引入的一些最常见的重大更改。
经理
诸如Client#users
和 之Guild#roles
类的属性现在是manager,而不是缓存Collection
的项目。要访问此集合,请使用以下cache
属性:
const user = client.users.cache.get('123456789012345678')
const role = message.guild.roles.cache.find(r => r.name === 'Admin')
此外,方法等GuildMember#addRole
,Guild#createChannel
和TextBasedChannel#fetchMessages
已经转移到相应的管理:
await message.member.roles.add(role)
await message.guild.channels.create('welcome')
const messages = await message.channel.messages.fetch()
Collection
的Collection
类别(例如client.users.cache
,guild.roles.cache
,guild.channels.cache
)现在只接受功能,而不是属性的键和值,对于.find
和.findKey
:
// v11: collection.find('property', 'value')
collection.find(item => item.property === 'value')
.exists
, .deleteAll
, .filterArray
,.findAll
也已删除:
// v11: collection.exists('property', 'value')
collection.some(item => item.property === 'value')
// v11: collection.deleteAll()
Promise.all(collection.map(item => item.delete()))
// v11: collection.filterArray(fn)
collection.filter(fn).array()
// v11: collection.findAll('property', value')
collection.filter(item => item.property === 'value').array()
.tap
现在在集合上运行一个函数,而不是集合中的每个项目:
// v11: collection.tap(item => console.log(item))
collection.each(item => console.log(item))
// New .tap behaviour:
collection.tap(coll => console.log(`${coll.size} items`))
RichEmbed
/MessageEmbed
在RichEmbed
类已被删除; 改用MessageEmbed
现在用于所有嵌入的类(而不是刚刚收到的嵌入)。
const {MessageEmbed} = require('discord.js')
const embed = new MessageEmbed()
该addBlankField
方法也已删除。此方法只是添加了一个带有零宽度空格 ( \u200B
) 作为名称和值的字段,因此要添加一个空白字段,请执行以下操作:
embed.addField('\u200B', '\u200B')
嗓音
所有VoiceConnection
/VoiceBroadcast#play***
方法都统一在一个play
方法下:
const dispatcher = connection.play('./music.mp3')
Client#createVoiceBroadcast
已移至ClientVoiceManager
:
const broadcast = client.voice.createVoiceBroadcast()
此外,StreamDispatcher
扩展的Node.js' stream.Writable
,因此使用dispatcher.destroy()
替代dispatcher.end()
。该end
事件已被删除以支持本地finish
事件。
图片网址
诸如User#displayAvatarURL
和 之Guild#iconURL
类的属性现在是方法:
const avatar = user.displayAvatarURL()
const icon = mesage.guild.iconURL()
您还可以传递 anImageURLOptions
来自定义格式和大小等内容。
更多信息
要了解有关 v12 重大更改的更多信息,请查看更新指南和更改日志。该文档也是查找特定方法/属性的好资源。