我正在构建一个discord bot,我想将信息保存在bdays.json中,但会弹出此错误。所有其他命令都工作得很好,但我收到了这个错误:
TypeError:无法读取未定义的属性"execute">
我该怎么办?
main.js
const Discord = require('discord.js');
const client = new Discord.Client();
const prefix = '?';
const fs = require('fs');
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);
}
client.once('ready', () => {
console.log('Bot is online!');
});
client.on('message', message => {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === 'jsidement') {
client.commands.get('ping').execute(message, args);
} else if (command === 'help') {
client.commands.get('help').execute(message, args, Discord);
} else if (command === 'mute') {
client.commands.get('mute').execute(message, args);
} else if (command === 'unmute') {
client.commands.get('unmute').execute(message, args);
} else if (command === 'remember') {
client.commands.get('remember').execute(message, args);
}
})
client.login('Token');
和remeber.js
module.exports = {
name: 'remeber',
description: 'this is a remember command!',
execute(message, args){
const fs = require('fs');
client.bdays = require ('./bdays.json');
client.bdays [message.author.username] = {
message: message.content
}
fs.writeFile('./bdays.json', JSON.stringify (client.bdays, null, 4), err => {
if(err) throw err;
message.channel.send('Saved!');
});
}
}
我该怎么办?
您的代码中有一个拼写错误。。。
在remeber.js
中,您将命令的名称命名为remeber
,但在main.js
文件中,您使用client.commands.get('remember').execute(message, args);
要修复它,请使用以下任一项:
// remember.js
module.exports = {
name: 'remember',
description: 'this is a remember command!',
execute(message, args){
const fs = require('fs');
client.bdays = require ('./bdays.json');
client.bdays [message.author.username] = {
message: message.content
}
fs.writeFile('./bdays.json', JSON.stringify (client.bdays, null, 4), err => {
if(err) throw err;
message.channel.send('Saved!');
});
}
}
或者将拼写错误的行替换为:
client.commands.get('remeber').execute(message, args);