首页 > 解决方案 > discord.js TypeError“无法读取未定义的属性'执行'”

问题描述

我得到“无法读取未定义的属性‘执行’”

这是 index.js 文件中的命令

const Discord = require("discord.js")
const client = new Discord.Client()
const config = require("./config.json")
const fs = require("fs")
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./cmds/').filter(file => file.endsWith('.js'));
for(const file of commandFiles){
    const command = require(`./cmds/${file}`)

    client.commands.set(command.name, command)
}
//client.on//
client.on('ready', () =>{
    console.log("The client is ready!")
})
let prefix = config.prefix;
client.on("message", (message) => {
  if(message.author.bot) return;
  if (!message.content.startsWith(prefix)) return;

  const args = message.content.slice(prefix.length).trim().split(/ +/g);
  const command = args.shift().toLowerCase();

  if(command === 'pnig') {
        client.commands.get('ping').execute(message, args);
  }
});
client.login(config.token)

这是 ping.js 上的那个

const discord = require("discord.js")
module.exports = {
    name: 'ping',
    description: 'pong?',
     execute(message, args) {
        message.channel.send('pong!')
    }
}

你能告诉我我的代码有什么问题吗?

标签: node.jsdiscord.jsexecute

解决方案


您的代码错误实际上是拼写错误。你看,你放了 pnig 而不是 ping 这使得异常处理说 .execute 没有定义。

  if(command === 'pnig') {
        client.commands.get('ping').execute(message, args);
  }

对此的简单修复如下:

if(command === 'ping') {
        client.commands.get('ping').execute(message, args);
  }

希望你喜欢!


推荐阅读