Node.js 在Discord.js中执行命令时,Discord Bot崩溃
我在制造一个不和机器人。现在我添加了命令处理。Bot正常启动,但如果我键入命令,它将显示以下错误代码:Node.js 在Discord.js中执行命令时,Discord Bot崩溃,node.js,discord,discord.js,bots,Node.js,Discord,Discord.js,Bots,我在制造一个不和机器人。现在我添加了命令处理。Bot正常启动,但如果我键入命令,它将显示以下错误代码: C:\Users\Matteo\sudo_\sudocanary\index.js:24 client.commands.get('ping').execute(message, args); ^ TypeError: Cannot read property 'execute' of undefined
C:\Users\Matteo\sudo_\sudocanary\index.js:24
client.commands.get('ping').execute(message, args);
^
TypeError: Cannot read property 'execute' of undefined
at Client.<anonymous> (C:\Users\Matteo\sudo_\sudocanary\index.js:24:36)
at Client.emit (events.js:315:20)
at MessageCreateAction.handle (C:\Users\Matteo\sudo_\sudocanary\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\Matteo\sudo_\sudocanary\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\Matteo\sudo_\sudocanary\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
at WebSocketShard.onPacket (C:\Users\Matteo\sudo_\sudocanary\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
at WebSocketShard.onMessage (C:\Users\Matteo\sudo_\sudocanary\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
at WebSocket.onMessage (C:\Users\Matteo\sudo_\sudocanary\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (events.js:315:20)
at Receiver.receiverOnMessage (C:\Users\Matteo\sudo_\sudocanary\node_modules\ws\lib\websocket.js:825:20)
Process finished with exit code 1
现在是ping.js中的代码:
module.exports.execute={
名称:'平',
描述:“Ping!”,
执行(消息){
message.channel.send('Pong');
},
};
谢谢!(我正在使用discord.js v12)在index.js中,您需要将命令添加到
客户端。命令
才能实际使用它们。您在ping.js中也使用了module.exports.execute
,而您应该只使用module.exports
(在module.exports中已经定义了execute()
方法,作为方法execute(message)
)
下面是代码中的修复程序
index.js:
const client = new Discord.Client();
client.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'))
for(const file of commandFiles){
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
ping.js:
module.exports = {
name: 'ping',
description: 'Ping!',
execute(message) {
message.channel.send('Pong.');
},
};
请更仔细地查看您尝试使用的命令处理程序的示例,因为它们显示了正确的方法,并解释了命令处理程序的每个部分的作用。我建议您仔细检查并学习一切工作原理。module.exports
而不是module.exports.execute
。此外,您没有向client.commands
集合添加任何内容。