我升级为不和谐。JSV12,但它破坏了我现有的v11代码。下面是一些导致错误的示例:
// TypeError: client.users.get is not a function
const user = client.users.get('123456789012345678')
// TypeError: message.guild.roles.find is not a function
const role = message.guild.roles.find(r => r.name === 'Admin')
// TypeError: message.member.addRole is not a function
await message.member.addRole(role)
// TypeError: message.guild.createChannel is not a function
await message.guild.createChannel('welcome')
// TypeError: message.channel.fetchMessages is not a function
const messages = await message.channel.fetchMessages()
const {RichEmbed} = require('discord.js')
// TypeError: RichEmbed is not a constructor
const embed = new RichEmbed()
const connection = await message.channel.join()
// TypeError: connection.playFile is not a function
const dispatcher = connection.playFile('./music.mp3')
如何将代码迁移到Discord。JSV12并修复这些错误?在哪里可以看到v12引入的突破性更改?
下面是在Discord中引入的一些最常见的突破性变化。人们遇到的JSV12。
像Client#users
和Guild#roles
这样的属性现在是管理者,而不是缓存的项目集合
。要访问此集合,请使用缓存
属性:
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()
集合
类(例如客户端.用户.缓存
,帮会.角色.缓存
,帮会.频道.缓存
)现在只接受的函数,而不接受属性键和值。查找
和。findKey
:
// v11: collection.find('property', 'value')
collection.find(item => item.property === 'value')
。存在
,。删除所有
,。过滤器阵列
,。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()
。点击
现在对集合而不是集合中的每个项目运行一个函数:
// 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
类,该类现在用于所有嵌入(而不是刚刚收到的嵌入)。
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'流。可写
,所以使用dispatcher.destroy()
代替dispatcher.end()
。end
事件已被删除,取而代之的是本机over
事件。
诸如User#displayAvatarURL
和Guild#iconURL
等属性现在都是方法:
const avatar = user.displayAvatarURL()
const icon = mesage.guild.iconURL()
您还可以传递一个ImageURLOptions
,以自定义格式和大小等内容。
要了解有关v12突破性更改的更多信息,请查看更新指南和更改日志。文档也是查找特定方法/属性的良好资源。
问题内容: 我正在从elasticsearch1.4.3迁移到2.4,并替换了elasticsearch文档中引用的一段代码,而其他参考则需要替换andFilter? 码:- 问题答案: 您可以这样做:
问题内容: 我正在将Java代码库迁移到纯Scala,并且只能使用这一段代码。我有一个IntervalMap的实现,即一个数据结构,可让您有效地将范围映射到,和操作全部所在的位置(与IntervalTree或SegmentTree略有不同)。 这段代码使用Java,并且在迁移到Scala时遇到了两个大问题: Scala没有-我决定使用(奇怪的Scala有但没有)存储密钥并将值存储在辅助中来解决它。
如果有人能给出有关迁移到Null-Safety的说明,那就太好了。
请问有一份android环境运行的代码,可以直接转换到DevEco Studio编译实现么 尝试在DevEco Studio打开,但是无法直接预览,是否需要转换成ARKTS语言呢
问题内容: 我正在从弹性搜索1.4.3迁移到2.4,并且替换了弹性搜索文档中引用的一段代码,而其他参考则需要替换andFilter? 码:- 问题答案: 您可以这样做:
Spring云流是否支持下面的Kafka流应用程序。下面是Kafka示例应用程序摘录中的代码。感谢您的任何反馈或支持。