從 Discord.js v11 遷移到 v12
升級到 Discord.js v12 可能會破壞 v11 的現有程式碼。本文將重點介紹一些最常見的重大變更並提供解決方案。
管理者
先前快取的集合(例如 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');
Collection 的其他更改包括刪除 .exists、.deleteAll、.filterArray和.findAll.
RichEmbed/MessageEmbed
RichEmbed 類別已棄用。請改用 MessageEmbed 類別:
const {MessageEmbed} = require('discord.js'); const embed = new MessageEmbed();
addBlankField 方法也已被刪除。若要新增空白字段,請使用:
embed.addField('\u200B', '\u200B');
語音
所有VoiceConnection/VoiceBroadcast#play*** 方法已統一在單一🎜 >
const dispatcher = connection.play('./music.mp3');Client#createVoiceBroadcast已移至ClientVoiceManager:
const broadcast = client.voice.createVoiceBroadcast();
映像URL
User#displayAvatarURL 和Guild#iconURL 等屬性現在是可以採用ImageURLOptions 物件來自訂大小和Guild#iconURL 等屬性現在是可以採用ImageURLOptions 物件來自訂大小和格式的物件方法:const avatar = user.displayAvatarURL(); const icon = message.guild.iconURL();
額外資源
有關 Discord.js v12 中引入的重大變更的更全面概述,請參閱更新指南、變更日誌和文件。以上是Discord.js v11 到 v12 的遷移:有哪些關鍵的重大變更以及如何修復它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!