This repository has been archived on 2024-01-30. You can view files and clone it, but cannot push or open issues or pull requests.
anitrox/start.js

118 lines
3.9 KiB
JavaScript
Raw Normal View History

#!/usr/bin/env -S node
const fs = require('fs');
const Discord = require('discord.js');
const config = require('./config.json');
console.log('Starting!');
const client = new Discord.Client({ intents: config.intents.map(intent => eval(`Discord.Intents.FLAGS.${intent}`)) });
client.commands = new Discord.Collection();
fs.readdirSync('./commands').filter(file => file.endsWith('.js')).forEach(file => {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
});
client.generateErrorMessage = (errorMsg, avatarURL) => ({
embeds: [{
title: '<:AnitroxError:809651936563429416> Error',
color: 13632027,
footer: {
icon_url: avatarURL,
text: config.footerTxt
},
fields: [
{
name: 'Something went wrong!',
value: errorMsg
}
]
}]
});
client.on('error', (e) => console.log(`[ERROR] ${e}`));
client.on('warn', (e) => (`[WARN] ${e}`));
client.once('ready', async () => {
2022-04-22 15:01:17 -05:00
const sandboxSettings = config.sandbox;
const localCommands = client.guilds.cache.get(sandboxSettings.id)?.commands;
const globalCommands = client.application.commands;
2022-05-01 20:11:30 -05:00
let existingLocal = await localCommands?.fetch();
let existingGlobal = await globalCommands?.fetch();
2022-04-22 15:01:17 -05:00
if (sandboxSettings.enabled) {
if (sandboxSettings.refreshLocal) {
console.log('deleting previous local commands');
2022-05-01 20:11:30 -05:00
existingLocal?.forEach(async x => {
await localCommands?.delete(x);
2022-04-22 15:01:17 -05:00
});
existingLocal = new Discord.Collection();
}
2022-04-22 15:01:17 -05:00
if (sandboxSettings.refreshGlobal) {
console.log('deleting previous global commands');
2022-05-01 20:11:30 -05:00
existingGlobal?.forEach(async x => {
await client.application?.commands.delete(x);
2022-04-22 15:01:17 -05:00
});
existingGlobal = new Discord.Collection();
}
}
2022-04-22 15:01:17 -05:00
client.commands.forEach(async command => {
2022-05-01 20:11:30 -05:00
if (sandboxSettings.enabled && !existingLocal?.map(x => x.name).includes(command.name)) {
await localCommands?.create(command);
2022-04-22 15:01:17 -05:00
// console.log(`created new local command ${command.name}`);
}
2022-05-01 20:11:30 -05:00
if (!existingGlobal?.map(x => x.name).includes(command.name)) {
await globalCommands?.create(command);
2022-04-22 15:01:17 -05:00
// console.log(`created new global command ${command.name}`);
}
});
console.clear();
2022-04-18 11:03:01 -05:00
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!');
2022-04-18 11:03:01 -05:00
// Statuses
setInterval(async () => {
// Picks a status from the config file
const index = Math.floor(Math.random() * config.statuses.length);
2022-05-01 20:11:30 -05:00
await client.user?.setActivity(config.statuses[index]);
2022-04-18 11:03:01 -05:00
}, 20000);
});
// Begin Command Handler
client.on('messageCreate', async (message) => {
2022-04-18 11:03:01 -05:00
if (!message.content.startsWith(config.prefix) || message.author.bot) return;
2022-04-18 11:03:01 -05:00
const args = message.content.slice(config.prefix.length).split(/\s+/);
const command = args.shift().toLowerCase();
2022-04-18 11:03:01 -05:00
if (!client.commands.has(command)) return;
2022-04-18 11:03:01 -05:00
try {
await client.commands.get(command).parseMessage(client, config, message, args);
2022-04-18 11:03:01 -05:00
} 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
}
}]
});
2022-04-18 11:03:01 -05:00
}
});
client.on('interactionCreate', async (interaction) => {
client.commands.get(interaction.commandName).parseInteraction(client, config, interaction);
});
client.login(config.token);