handleCommands
unknown
javascript
a year ago
1.7 kB
11
Indexable
const fs = require("fs");
const path = require("path");
const { Client, Collection, Events, GatewayIntentBits } = require("discord.js");
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
require("dotenv").config();
const token = process.env.TOKEN;
// Command handling
client.commands = new Collection();
const foldersPath = path.join(__dirname, "../../commands");
const commandFolders = fs.readdirSync(foldersPath);
for (const folder of commandFolders) {
const commandsPath = path.join(foldersPath, folder);
const commandFiles = fs
.readdirSync(commandsPath)
.filter((file) => file.endsWith(".js"));
for (const file of commandFiles) {
const filePath = path.join(commandsPath, file);
const command = require(filePath);
if ("data" in command && "execute" in command) {
client.commands.set(command.data.name, command);
} else {
console.log(
`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`
);
}
}
}
client.on(Events.InteractionCreate, async (interaction) => {
if (!interaction.isCommand()) return;
const { commandName } = interaction;
const command = client.commands.get(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,
});
}
});
client.once(Events.ClientReady, (readyClient) => {
console.log(`✅ Ready! Logged in as ${readyClient.user.tag}`);
});
module.exports = client;
Editor is loading...
Leave a Comment