>  기사  >  웹 프론트엔드  >  내 Discord.js v11 코드를 v12로 마이그레이션하는 방법은 무엇입니까?

내 Discord.js v11 코드를 v12로 마이그레이션하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-27 13:38:10693검색

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');

기타 제거된 컬렉션 방법 포함:

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

RichEmbed 에게 MessageEmbed

RichEmbed 클래스는 MessageEmbed로 대체되었습니다. 수신된 삽입을 포함한 모든 삽입은 이제 MessageEmbed를 사용합니다.

const {MessageEmbed} = require('discord.js');
const embed = new MessageEmbed();

addBlankField 메서드가 제거되었습니다. 빈 필드를 추가하려면 다음을 사용하세요.

embed.addField('\u200B', '\u200B');

Voice Changes

모든 VoiceConnection/VoiceBroadcast#play* 메소드가 단일로 통합됩니다. 놀다 메서드:

const dispatcher = connection.play('./music.mp3');

Client#createVoiceBroadcast가 ClientVoiceManager:

const broadcast = client.voice.createVoiceBroadcast();

StreamDispatcher로 이동되어 Node.js의 stream.Writable을 확장하므로 디스패처 대신 Dispatcher.destroy()를 사용하세요. end().

이미지 URL

User#displayAvatarURL 및 Guild#iconURL과 같은 속성은 이제 메소드입니다.

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

자세한 내용과 주요 변경 사항은 공식 Discord.js 문서를 참조하세요.

위 내용은 내 Discord.js v11 코드를 v12로 마이그레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.