首頁 > web前端 > js教程 > 如何將我的 Discord.js v11 程式碼遷移到 v12?

如何將我的 Discord.js v11 程式碼遷移到 v12?

DDD
發布: 2024-11-27 13:38:10
原創
717 人瀏覽過

How to Migrate My Discord.js v11 Code to v12?

將程式碼從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方法包括:

  • .exists
  • .deleteAll
  • .filterArray
  • .findAll

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板