I get this error:
TypeError: Cannot read properties of undefined (reading 'destroy')
When running this code:
const { SlashCommandBuilder } = require("@discordjs/builders");
require('dotenv').config()
module.exports = {
data: new SlashCommandBuilder()
.setName("restart")
.setDescription("Restarts the bot."),
async execute(interaction, args, client) {
let isBotOwner = interaction.user.id == '847213179142799452';
if (isBotOwner) {
interaction.reply('Restarting...').then(m => {
client.destroy().then(() => {
client.login(process.env.TOKEN);
});
});
} else {
interaction.reply('You cannot run this command unless you are the developer of me.')
}
}
}
The error is on client.destroy().
I've been looking in the docs and guides and on google but can't find anything on how to get it to work.
Could it be because I'm trying to destroy the client through a slash command?
Here is the command/interaction handler:
const {
Client,
Collection,
Intents
} = require('discord.js');
const client = new Client({
intents: [Intents.FLAGS.GUILDS]
});
const fs = require('fs');
require('dotenv').config()
client.commands = new Collection();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
// Set a new item in the Collection
// With the key as the command name and the value as the exported module
client.commands.set(command.data.name, command);
}
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
const command = client.commands.get(interaction.commandName);
if (!command) return;
try {
await command.execute(interaction);
} catch (error) {
console.error(error);
await interaction.reply({
content: 'There was an error while executing this command!',
ephemeral: true
});
}
});