【问题标题】:Discord.js v13 code breaks when upgrading to v14升级到 v14 时 Discord.js v13 代码中断
【发布时间】:2022-07-19 05:30:53
【问题描述】:

我刚刚将我的 discord.js 从 v13 更新到 v14,有很多错误。

意图错误:

const client = new Client({
  intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
  ],
});
//     Intents.FLAGS.GUILDS,
//            ^
//
// TypeError: Cannot read properties of undefined (reading 'FLAGS')

const client = new Client({
  intents: ['GUILDS', 'GUILD_MEMBERS', 'GUILD_MESSAGES'],
});
//    throw new RangeError(ErrorCodes.BitFieldInvalid, bit);
//
// RangeError [BitFieldInvalid]: Invalid bitfield flag or number: GUILDS.

interactions 的错误:

if (interaction.isCommand()) {}
// TypeError: interaction.isCommand is not a function

if (interaction.isButton()) {}
// TypeError: interaction.isButton is not a function

if (interaction.isAutocomplete()) {}
// TypeError: interaction.isAutocomplete is not a function

if (interaction.isMessageComponent()) {}
// TypeError: interaction.isMessageComponent is not a function

if (interaction.isModalSubmit()) {}
// TypeError: interaction.isModalSubmit is not a function

渠道错误:

if (message.channel.isText()) {}
// TypeError: channel.isText is not a function

if (message.channel.isVoice()) {}
// TypeError: channel.isVoice is not a function

if (message.channel.isDM()) {}
// TypeError: channel.isDM is not a function

if (message.channel.isCategory()) {}
// TypeError: channel.isCategory is not a function

构建器和嵌入错误:

const embed = new MessageEmbed();
//  const embed = new MessageEmbed();
//                ^
//
// TypeError: MessageEmbed is not a constructor

const button = new MessageButton();
//  const button = new MessageButton();
//                 ^
//
// TypeError: MessageButton is not a constructor

const actionRow = new MessageActionRow();
//  const actionRow = new MessageActionRow();
//                    ^
//
// TypeError: MessageActionRow is not a constructor

const selectMenu = new MessageSelectMenu();
//  const selectMenu = new MessageSelectMenu();
//                     ^
//
// TypeError: MessageSelectMenu is not a constructor

const textInput = new TextInputComponent();
//  const textInput = new TextInputComponent();
//                    ^
//
// TypeError: TextInputComponent is not a constructor

【问题讨论】:

    标签: javascript discord discord.js


    【解决方案1】:

    Discord.js v14 包含许多重大更改。它现在需要使用 Node 16.9 或更高版本,因此请确保您使用 upgrade to the latest LTS version

    此版本的 v14 使用 Discord API v10

    意图错误:

    // v13
    const client = new Client({
      intents: [
        Intents.FLAGS.GUILDS,
        Intents.FLAGS.GUILD_MESSAGES,
      ],
    });
    
    // OR
    const client = new Client({
      intents: ['GUILDS', 'GUILD_MESSAGES'],
    });
    
    // v14
    const { Client, GatewayIntentBits } = require('discord.js');
    const client = new Client({
      intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
      ],
    });
    

    如需GatewayIntentBits的完整列表,您可以read this answer

    interactions 的错误:

    const { InteractionType } = require('discord.js');
    
    // v13
    if (interaction.isCommand()) {}
    // v14
    if (interaction.type === InteractionType.ApplicationCommand) {}
    
    // v13
    if (interaction.isAutocomplete()) {}
    // v14
    if (interaction.type === InteractionType.ApplicationCommandAutocomplete) {}
    
    // v13
    if (interaction.isMessageComponent()) {}
    // v14
    if (interaction.type === InteractionType.MessageComponent) {}
    
    // v13
    if (interaction.isModalSubmit()) {}
    // v14
    if (interaction.type === InteractionType.ModalSubmit) {}
    

    频道错误:

    const { ChannelType } = require('discord.js');
    // v13
    if (message.channel.isText()) {}
    // v14
    if (channel.type === ChannelType.GuildText) {}
    
    // v13
    if (message.channel.isVoice()) {}
    // v14
    if (channel.type === ChannelType.GuildVoice) {}
    
    // v13
    if (message.channel.isDM()) {}
    // v14
    if (channel.type === ChannelType.DM) {}
    
    // v13
    if (message.channel.isCategory()) {}
    // v14
    if (channel.type === ChannelType.GuildCategory) {}
    

    如需ChannelTypes 的完整列表,您可以read this answer

    构建器和嵌入错误:

    // v13
    const embed = new MessageEmbed();
    // v14
    const { EmbedBuilder } = require('discord.js');
    const embed = new EmbedBuilder();
    
    // v13
    const button = new MessageButton();
    // v14 
    const { ButtonBuilder } = require('discord.js');
    const button = new ButtonBuilder();
    
    // v13
    const actionRow = new MessageActionRow();
    // v14 
    const { ActionRowBuilder } = require('discord.js');
    const actionRow = new ActionRowBuilder();
    
    // v13
    const selectMenu = new MessageSelectMenu();
    // v14
    const { SelectMenuBuilder } = require('discord.js');
    const selectMenu = new SelectMenuBuilder();
    
    // v13
    const textInput = new TextInputComponent();
    // v14
    const { TextInputBuilder } = require('discord.js');
    const textInput = new TextInputBuilder();
    

    有关更多重大更改,您可以访问 discord.js 指南:https://discordjs.guide/additional-info/changes-in-v14.html

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2022-01-05
      • 2021-11-09
      • 2015-09-10
      • 2011-06-06
      相关资源
      最近更新 更多