將程式碼從v11 移轉到Discord.js 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類別現在僅接受 .find 和 .findKey 的函數。用函數取代屬性鍵和值:
// v11: collection.find('property', 'value') collection.find(item => item.property === 'value');
其他移除的 Collection方法包括:
RichEmbed到MessageEmbed
RichEmbed類別已替換為 MessageEmbed。所有嵌入(包括接收的嵌入)現在都使用 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();
StreamDispatcher 擴充了Node.js 的Stream.Writable,因此使用dispatcher. destroy() 而非dispatcher.end()。
Image URL
諸如User#displayAvatarURL 和Guild#iconURL 現在是方法:
const avatar = user.displayAvatarURL(); const icon = message.guild.iconURL();
有關更多詳細資訊和重大更改,有關更多詳細資訊和重大更改,有關更多詳細資訊和重大更改,有關更多詳細資訊和重大更改,有關更多詳細資訊和重大更改,請參閱官方Discord.js 文件。
以上是如何將我的 Discord.js v11 程式碼遷移到 v12?的詳細內容。更多資訊請關注PHP中文網其他相關文章!