首页 >web前端 >js教程 >Discord.js v11 到 v12 的迁移:有哪些关键的重大更改以及如何修复它们?

Discord.js v11 到 v12 的迁移:有哪些关键的重大更改以及如何修复它们?

Barbara Streisand
Barbara Streisand原创
2024-12-02 11:06:11620浏览

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 对象来自定义大小和格式的方法:

const avatar = user.displayAvatarURL();
const icon = message.guild.iconURL();

额外资源

有关 Discord.js v12 中引入的重大更改的更全面概述,请参阅更新指南、变更日志和文档。

以上是Discord.js v11 到 v12 的迁移:有哪些关键的重大更改以及如何修复它们?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn