【问题标题】:"TypeError: Cannot read properties of undefined (reading 'name')"“TypeError:无法读取未定义的属性(读取'名称')”
【发布时间】:2022-01-14 05:57:08
【问题描述】:

我尝试做一个机器人,它工作得很好,但现在我的“deploy-commands”文件中出现了这个错误,但我认为我没有触及这个文件中的任何内容

const fs = require('fs');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { clientId, guildId, token } = require('./config.json');

const commands = [];
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    commands.push(command.data.toJSON());
}

const rest = new REST({version: '9'}).setToken(token);

(async () => {
    try {
        await rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commands});
        console.log('Les command ont étés enregistrées !')
    } catch (error) {
        console.error(error);
    }
})();

请问这是什么错误以及如何解决?

我的 ping.js:

const { SlashCommandBuilder } = require('@discordjs/builders');
const { CommandInteraction } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('ping')
        .setDescription('Renvoie le nombre de ping'),
        /**
         * 
         * @param {CommandInteraction} Interaction 
         */
    async execute (Interaction) {
        await Interaction.reply('Pong');
    
        const message = await Interaction.fetchReply();

        return Interaction.editReply(`Le message a mis ${message.createdTimestamp - Interaction.createdTimestamp} ms.\nTon ping est de ${Interaction.client.ws.ping} ms.`);
    }
}

【问题讨论】:

  • 哪一行会报错?
  • 第 11 行 ( commands.push(command.data.toJSON()); )
  • 我们可以看一个命令文件的例子吗
  • 我添加了一个命令文件

标签: javascript discord discord.js


【解决方案1】:

你应该在 for 循环之外声明命令

const command = require(`./commands/${file}`)

【讨论】:

  • 如果它们在循环之外,他们将如何遍历所有命令文件? file 来自哪里?
猜你喜欢
  • 2021-11-13
  • 2022-06-22
  • 2021-12-28
  • 2015-10-16
  • 2021-08-16
  • 2020-10-11
  • 2019-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多