Maison >interface Web >js tutoriel >Mise à niveau de Discord.js v13 vers v14 : comment corriger les erreurs courantes ?

Mise à niveau de Discord.js v13 vers v14 : comment corriger les erreurs courantes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 05:43:40631parcourir

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

Discord.js v14 : gestion des erreurs de mise à niveau

Lors de la mise à niveau de Discord.js v13 vers la v14, vous pouvez rencontrer diverses erreurs. Abordons chaque problème et proposons des solutions.

Événements de message et d'interaction

Les événements de message et d'interaction ont été supprimés. À la place, utilisez messageCreate et interactionCreate:

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

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

Intents

v14 utilise la nouvelle énumération GatewayIntentBits. Mettez à jour votre code en conséquence :

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

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

Interactions

Certaines protections de type interaction ont été supprimées. Comparez interaction.type avec l'énumération InteractionType :

// 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) {}

Channels

Les protections de type pour les canaux ont été supprimées. Utilisez l'énumération ChannelType pour affiner les canaux :

// 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();

Builders and Embeds

MessageEmbed a été renommé EmbedBuilder. MessageAttachment a été renommé AttachmentBuilder et utilise un objet AttachmentData :

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

Les générateurs MessageComponent ont été renommés et ont un suffixe Builder :

// 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 nécessite nombres pour l'énumération paramètres :

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

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

Types d'activité

Le type d'activité setPresence ne peut être défini que sur "JOUER".

Contenu du message

Si message.content est vide, assurez-vous que GatewayIntentBits.MessageContent est inclus dans votre tableau d'intention.

Reportez-vous au Guide Discord.js pour une liste complète des modifications récentes : https://discordjs.guide/additional-info/changes-in-v14.html

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn