I’m building a discord bot and I want to save information in bdays.json but this error pops up. All other commands are working just fine but I am getting this error:
TypeError: Cannot read property ‘execute’ of undefined
What should I do?
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');
and 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!'); }); } }
What should I do?
Advertisement
Answer
You have a typo in your code…
In remeber.js
you give the command the name of remeber
but then in your main.js
file you use client.commands.get('remember').execute(message, args);
To fix it, use either:
// 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!'); }); } }
Or replace the line with the typo with this instead:
client.commands.get('remeber').execute(message, args);