Discord.js v12 迁移指南:从 v11 到 v12 的代码迁移
迁移到 Discord.js v12 可能会因重大更改而导致错误。这是解决这些问题并确保顺利迁移的指南。
管理者
以前缓存的属性(如 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();
Collection
Collection 类现在使用函数对于 .find 和 .findKey:
// v11: collection.find('property', 'value') collection.find(item => item.property === 'value');
.exists、.deleteAll 和 .filterArray 等方法已被删除:
// v11: collection.exists('property', 'value') collection.some(item => item.property === 'value'); // v11: collection.deleteAll() Promise.all(collection.map(item => item.delete()));
。现在在集合本身上运行函数,而不是其项目:
// 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 替换,现在使用 MessageEmbed对于所有嵌入:
const {MessageEmbed} = require('discord.js'); const embed = new MessageEmbed();
addBlankField 方法已被删除。要添加空白字段,请使用:
embed.addField('\u200B', '\u200B');
语音
所有播放方法现在统一在一个播放方法下:
const dispatcher = connection.play('./music.mp3');
Client#createVoiceBroadcast 已移至ClientVoiceManager:
const broadcast = client.voice.createVoiceBroadcast();
StreamDispatcher 扩展了 Node.js 的流。可写,因此使用dispatcher.destroy() 而不是dispatcher.end()。
图像 URL
像 User#displayAvatarURL 和 Guild#iconURL 这样的属性现在是方法,返回 ImageURLOptions 对象进行自定义:
const avatar = user.displayAvatarURL(); const icon = mesage.guild.iconURL();
更多信息
有关重大更改的更多详细信息,请参阅[更新指南](https: //discordjs.guide/additional-info/changes/v12.html) 和[变更日志](https://github.com/discordjs/discord.js/blob/main/CHANGELOG.md#v1200)。 [Discord.js 文档](https://discord.js.org/#/docs) 也提供了宝贵的帮助。
以上是如何成功地将我的 Discord.js 机器人从 v11 迁移到 v12?的详细内容。更多信息请关注PHP中文网其他相关文章!