Rumah >hujung hadapan web >tutorial js >Peningkatan Discord.js v13 hingga v14: Bagaimana Saya Membetulkan Ralat Biasa?
Apabila menaik taraf daripada Discord.js v13 kepada v14, anda mungkin menghadapi pelbagai ralat. Mari kita atasi setiap isu dan berikan penyelesaian.
Mesej dan peristiwa interaksi telah dialih keluar. Sebaliknya, gunakan messageCreate dan interactionCreate:
// v13 client.on('message', (message) => {}); client.on('interaction', (interaction) => {}); // v14 client.on('messageCreate', (message) => {}); client.on('interactionCreate', (interaction) => {});
v14 menggunakan enum GatewayIntentBits baharu. Kemas kini kod anda dengan sewajarnya:
// v13 const intents = [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]; // v14 const intents = [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages];
Sesetengah pengawal jenis interaksi telah dialih keluar. Bandingkan interaction.type dengan enum 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) {}
Pengadang jenis untuk saluran telah dialih keluar. Gunakan enum ChannelType untuk mengecilkan saluran:
// 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 telah dinamakan semula kepada EmbedBuilder. MessageAttachment telah dinamakan semula kepada AttachmentBuilder dan menggunakan objek 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' });
Pembina MessageComponent telah dinamakan semula dan mempunyai akhiran 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 memerlukan nombor untuk enum parameter:
// Wrong new ButtonBuilder() .setCustomId('verification') .setStyle('PRIMARY') // Fixed new ButtonBuilder() .setCustomId('verification') .setStyle(ButtonStyle.Primary)
setPresence jenis aktiviti hanya boleh ditetapkan kepada "MAIN."
Jika message.content ialah kosong, pastikan GatewayIntentBits.MessageContent disertakan dalam tatasusunan niat anda.
Rujuk kepada Panduan Discord.js untuk senarai komprehensif perubahan pecah: https://discordjs.guide/additional-info/changes-in-v14.html
Atas ialah kandungan terperinci Peningkatan Discord.js v13 hingga v14: Bagaimana Saya Membetulkan Ralat Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!