Offload event handlers to their own seperate files
This commit is contained in:
parent
0f6851adf8
commit
584a073ee0
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
event: require('path').parse(__filename).name,
|
||||||
|
once: false,
|
||||||
|
listener: () => e => { console.log(`[ERROR] ${e}`); }
|
||||||
|
};
|
|
@ -0,0 +1,25 @@
|
||||||
|
module.exports = {
|
||||||
|
event: require('path').parse(__filename).name,
|
||||||
|
once: false,
|
||||||
|
listener: (client, config) =>
|
||||||
|
async (interaction) => {
|
||||||
|
if (interaction.isApplicationCommand()) {
|
||||||
|
try {
|
||||||
|
await client.commands.get(interaction.commandName)?.parseInteraction(client, config, interaction);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
interaction.channel.send({
|
||||||
|
embeds: [{
|
||||||
|
title: '<:AnitroxError:809651936563429416> **Something went wrong!**',
|
||||||
|
description: error.stack,
|
||||||
|
color: 13632027,
|
||||||
|
footer: {
|
||||||
|
icon_url: interaction.user.displayAvatarURL(),
|
||||||
|
text: config.footerTxt
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,30 @@
|
||||||
|
module.exports = {
|
||||||
|
event: require('path').parse(__filename).name,
|
||||||
|
once: false,
|
||||||
|
listener: (client, config) =>
|
||||||
|
async (message) => {
|
||||||
|
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
|
||||||
|
|
||||||
|
const args = message.content.slice(config.prefix.length).split(/\s+/);
|
||||||
|
const command = args.shift()?.toLowerCase() ?? '';
|
||||||
|
|
||||||
|
if (!client.commands.has(command)) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await client.commands.get(command)?.parseMessage(client, config, message, args);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
message.channel.send({
|
||||||
|
embeds: [{
|
||||||
|
title: '<:AnitroxError:809651936563429416> **Something went wrong!**',
|
||||||
|
description: error.stack,
|
||||||
|
color: 13632027,
|
||||||
|
footer: {
|
||||||
|
icon_url: message.author.displayAvatarURL(),
|
||||||
|
text: config.footerTxt
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,58 @@
|
||||||
|
const { Collection } = require('discord.js');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
event: require('path').parse(__filename).name,
|
||||||
|
once: true,
|
||||||
|
listener: (client, config) =>
|
||||||
|
async () => {
|
||||||
|
const sandboxSettings = config.sandbox;
|
||||||
|
const localCommands = client.guilds.cache.get(sandboxSettings.id)?.commands;
|
||||||
|
const globalCommands = client.application?.commands;
|
||||||
|
let existingLocal = await localCommands?.fetch();
|
||||||
|
let existingGlobal = await globalCommands?.fetch();
|
||||||
|
|
||||||
|
if (sandboxSettings.enabled) {
|
||||||
|
if (sandboxSettings.refreshLocal && localCommands) {
|
||||||
|
console.log('deleting previous local commands');
|
||||||
|
existingLocal?.forEach(async (x) => {
|
||||||
|
await localCommands?.delete(x);
|
||||||
|
});
|
||||||
|
existingLocal = new Collection();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sandboxSettings.refreshGlobal) {
|
||||||
|
console.log('deleting previous global commands');
|
||||||
|
existingGlobal?.forEach(async x => {
|
||||||
|
await client.application?.commands.delete(x);
|
||||||
|
});
|
||||||
|
existingGlobal = new Collection();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
client.commands.forEach(async (command) => {
|
||||||
|
if (sandboxSettings.enabled && !existingLocal?.map(x => x.name).includes(command.name)) {
|
||||||
|
await localCommands?.create(command);
|
||||||
|
// console.log(`created new local command ${command.name}`);
|
||||||
|
}
|
||||||
|
if (!existingGlobal?.map(x => x.name).includes(command.name)) {
|
||||||
|
await globalCommands?.create(command);
|
||||||
|
// console.log(`created new global command ${command.name}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.clear();
|
||||||
|
console.log(' ___ _ __ ');
|
||||||
|
console.log(' / | ____ (_) /__________ _ __');
|
||||||
|
console.log(' / /| | / __ \\/ / __/ ___/ __ \\| |/_/');
|
||||||
|
console.log(' / ___ |/ / / / / /_/ / / /_/ /> < ');
|
||||||
|
console.log('/_/ |_/_/ /_/_/\\__/_/ \\____/_/|_| ');
|
||||||
|
console.log(`${config.release}, ${config.build}`);
|
||||||
|
console.log('Bot online. | Anitrox by IDeletedSystem64 | ALL MY CODE KEEPS BLOWING UP!');
|
||||||
|
// Statuses
|
||||||
|
setInterval(async () => {
|
||||||
|
// Picks a status from the config file
|
||||||
|
const index = Math.floor(Math.random() * config.statuses.length);
|
||||||
|
await client.user?.setActivity(config.statuses[index]);
|
||||||
|
}, 20000);
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,5 @@
|
||||||
|
module.exports = {
|
||||||
|
event: require('path').parse(__filename).name,
|
||||||
|
once: false,
|
||||||
|
listener: () => e => (`[WARN] ${e}`)
|
||||||
|
};
|
103
start.js
103
start.js
|
@ -3,14 +3,24 @@
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const Discord = require('discord.js');
|
const Discord = require('discord.js');
|
||||||
const config = require('./config.json');
|
const config = require('./config.json');
|
||||||
|
|
||||||
console.log('Starting!');
|
console.log('Starting!');
|
||||||
const client = new Discord.Client({ intents: config.intents.map(intent => eval(`Discord.Intents.FLAGS.${intent}`)) });
|
const client = new Discord.Client({ intents: config.intents.map(intent => eval(`Discord.Intents.FLAGS.${intent}`)) });
|
||||||
|
|
||||||
client.commands = new Discord.Collection();
|
client.commands = new Discord.Collection();
|
||||||
fs.readdirSync('./commands').filter(file => file.endsWith('.js')).forEach(file => {
|
fs.readdirSync('./commands')
|
||||||
const command = require(`./commands/${file}`);
|
.filter(file => file.endsWith('.js'))
|
||||||
client.commands.set(command.name, command);
|
.forEach(file => {
|
||||||
});
|
const command = require(`./commands/${file}`);
|
||||||
|
client.commands.set(command.name, command);
|
||||||
|
});
|
||||||
|
|
||||||
|
fs.readdirSync('./events')
|
||||||
|
.filter(file => file.endsWith('.js'))
|
||||||
|
.map(file => require(`./events/${file}`))
|
||||||
|
.forEach(({ once, event, listener }) => {
|
||||||
|
client[once ? 'once' : 'on'](event, listener(client, config));
|
||||||
|
});
|
||||||
|
|
||||||
client.generateErrorMessage = (errorMsg, avatarURL) => ({
|
client.generateErrorMessage = (errorMsg, avatarURL) => ({
|
||||||
embeds: [{
|
embeds: [{
|
||||||
|
@ -29,89 +39,4 @@ client.generateErrorMessage = (errorMsg, avatarURL) => ({
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
|
|
||||||
client.on('error', (e) => console.log(`[ERROR] ${e}`));
|
|
||||||
client.on('warn', (e) => (`[WARN] ${e}`));
|
|
||||||
client.once('ready', async () => {
|
|
||||||
const sandboxSettings = config.sandbox;
|
|
||||||
const localCommands = client.guilds.cache.get(sandboxSettings.id)?.commands;
|
|
||||||
const globalCommands = client.application.commands;
|
|
||||||
let existingLocal = await localCommands?.fetch();
|
|
||||||
let existingGlobal = await globalCommands?.fetch();
|
|
||||||
|
|
||||||
if (sandboxSettings.enabled) {
|
|
||||||
if (sandboxSettings.refreshLocal) {
|
|
||||||
console.log('deleting previous local commands');
|
|
||||||
existingLocal?.forEach(async x => {
|
|
||||||
await localCommands?.delete(x);
|
|
||||||
});
|
|
||||||
existingLocal = new Discord.Collection();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sandboxSettings.refreshGlobal) {
|
|
||||||
console.log('deleting previous global commands');
|
|
||||||
existingGlobal?.forEach(async x => {
|
|
||||||
await client.application?.commands.delete(x);
|
|
||||||
});
|
|
||||||
existingGlobal = new Discord.Collection();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
client.commands.forEach(async command => {
|
|
||||||
if (sandboxSettings.enabled && !existingLocal?.map(x => x.name).includes(command.name)) {
|
|
||||||
await localCommands?.create(command);
|
|
||||||
// console.log(`created new local command ${command.name}`);
|
|
||||||
}
|
|
||||||
if (!existingGlobal?.map(x => x.name).includes(command.name)) {
|
|
||||||
await globalCommands?.create(command);
|
|
||||||
// console.log(`created new global command ${command.name}`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
console.clear();
|
|
||||||
console.log(' ___ _ __ ');
|
|
||||||
console.log(' / | ____ (_) /__________ _ __');
|
|
||||||
console.log(' / /| | / __ \\/ / __/ ___/ __ \\| |/_/');
|
|
||||||
console.log(' / ___ |/ / / / / /_/ / / /_/ /> < ');
|
|
||||||
console.log('/_/ |_/_/ /_/_/\\__/_/ \\____/_/|_| ');
|
|
||||||
console.log(`${config.release}, ${config.build}`);
|
|
||||||
console.log('Bot online. | Anitrox by IDeletedSystem64 | ALL MY CODE KEEPS BLOWING UP!');
|
|
||||||
// Statuses
|
|
||||||
setInterval(async () => {
|
|
||||||
// Picks a status from the config file
|
|
||||||
const index = Math.floor(Math.random() * config.statuses.length);
|
|
||||||
await client.user?.setActivity(config.statuses[index]);
|
|
||||||
}, 20000);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Begin Command Handler
|
|
||||||
client.on('messageCreate', async (message) => {
|
|
||||||
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
|
|
||||||
|
|
||||||
const args = message.content.slice(config.prefix.length).split(/\s+/);
|
|
||||||
const command = args.shift().toLowerCase();
|
|
||||||
|
|
||||||
if (!client.commands.has(command)) return;
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.commands.get(command).parseMessage(client, config, message, args);
|
|
||||||
} catch (error) {
|
|
||||||
console.log(error);
|
|
||||||
message.channel.send({
|
|
||||||
embeds: [{
|
|
||||||
title: '<:AnitroxError:809651936563429416> **Something went wrong!**',
|
|
||||||
description: error.stack,
|
|
||||||
color: 13632027,
|
|
||||||
footer: {
|
|
||||||
icon_url: message.author.displayAvatarURL(),
|
|
||||||
text: config.footerTxt
|
|
||||||
}
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
client.on('interactionCreate', async (interaction) => {
|
|
||||||
client.commands.get(interaction.commandName).parseInteraction(client, config, interaction);
|
|
||||||
});
|
|
||||||
|
|
||||||
client.login(config.token);
|
client.login(config.token);
|
||||||
|
|
Reference in New Issue