首頁 >web前端 >js教程 >Discord.js v11 到 v12 的遷移:有哪些關鍵的重大變更以及如何修復它們?

Discord.js v11 到 v12 的遷移:有哪些關鍵的重大變更以及如何修復它們?

Barbara Streisand
Barbara Streisand原創
2024-12-02 11:06:11658瀏覽

Discord.js v11 to v12 Migration: What are the Key Breaking Changes and How Do I Fix Them?

從 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn