Maison >interface Web >js tutoriel >Mise à niveau de Discord.js v13 vers v14 : comment corriger les erreurs courantes ?
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.
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) => {});
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];
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) {}
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();
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();
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)
Le type d'activité setPresence ne peut être défini que sur "JOUER".
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!