Heim >Web-Frontend >js-Tutorial >Upgrade von Discord.js v13 auf v14: Wie behebe ich die häufigsten Fehler?

Upgrade von Discord.js v13 auf v14: Wie behebe ich die häufigsten Fehler?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-04 05:43:40631Durchsuche

Discord.js v13 to v14 Upgrade: How Do I Fix the Common Errors?

Discord.js v14: Umgang mit Upgrade-Fehlern

Beim Upgrade von Discord.js v13 auf v14 können verschiedene Fehler auftreten. Lassen Sie uns jedes Problem angehen und Lösungen anbieten.

Nachrichten- und Interaktionsereignisse

Die Nachrichten- und Interaktionsereignisse wurden entfernt. Verwenden Sie stattdessen messageCreate und interactionCreate:

// v13
client.on('message', (message) => {});
client.on('interaction', (interaction) => {});

// v14
client.on('messageCreate', (message) => {});
client.on('interactionCreate', (interaction) => {});

Intents

v14 verwendet die neue GatewayIntentBits-Enumeration. Aktualisieren Sie Ihren Code entsprechend:

// v13
const intents = [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES];

// v14
const intents = [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages];

Interaktionen

Einige Interaktionstypschutzvorrichtungen wurden entfernt. Vergleichen Sie „interaction.type“ mit der InteractionType-Enumeration:

// v13
if (interaction.isCommand()) {}
if (interaction.isAutocomplete()) {}
if (interaction.isMessageComponent()) {}
if (interaction.isModalSubmit()) {}

// v14
if (interaction.type === InteractionType.ApplicationCommand) {}
if (interaction.type === InteractionType.ApplicationCommandAutocomplete) {}
if (interaction.type === InteractionType.MessageComponent) {}
if (interaction.type === InteractionType.ModalSubmit) {}

Kanäle

Typschutz für Kanäle wurde entfernt. Verwenden Sie die ChannelType-Enumeration, um Kanäle einzugrenzen:

// v13
if (message.channel.isText()) {}
if (message.channel.isVoice()) {}
if (message.channel.isDM()) {}
if (message.channel.isCategory()) {}

// v14
if (channel.type === ChannelType.GuildText) {}
if (channel.type === ChannelType.GuildVoice) {}
if (channel.type === ChannelType.DM) {}
if (channel.type === ChannelType.GuildCategory) {}

// New type guards
channel.isDMBased();
channel.isTextBased();
channel.isVoiceBased();

Builder und Embeds

MessageEmbed wurde in EmbedBuilder umbenannt. MessageAttachment wurde in AttachmentBuilder umbenannt und verwendet ein AttachmentData-Objekt:

// v13
const embed = new MessageEmbed();
const attachment = new MessageAttachment(buffer, 'image.png');

// v14
const embed = new EmbedBuilder();
const attachment = new AttachmentBuilder(buffer, { name: 'image.png' });

MessageComponent-Builder wurden umbenannt und haben ein Builder-Suffix:

// v13
const button = new MessageButton();
const actionRow = new MessageActionRow();
const selectMenu = new MessageSelectMenu();
const textInput = new TextInputComponent();

// v14
const button = new ButtonBuilder();
const actionRow = new ActionRowBuilder();
const selectMenu = new SelectMenuBuilder();
const textInput = new TextInputBuilder();

Enums

v14 erfordert Zahlen für Enum-Parameter:

// Wrong
new ButtonBuilder()
  .setCustomId('verification')
  .setStyle('PRIMARY')

// Fixed
new ButtonBuilder()
  .setCustomId('verification')
  .setStyle(ButtonStyle.Primary)

Aktivität Typen

setPresence-Aktivitätstyp kann nur auf „PLAYING“ festgelegt werden.

Nachrichteninhalt

Wenn message.content leer ist, stellen Sie sicher, dass GatewayIntentBits.MessageContent in Ihrem Intent-Array enthalten ist .

Eine umfassende Liste der wichtigsten Änderungen finden Sie im Discord.js-Leitfaden: https://discordjs.guide/additional-info/changes-in-v14.html

Das obige ist der detaillierte Inhalt vonUpgrade von Discord.js v13 auf v14: Wie behebe ich die häufigsten Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn