56 lines
1.7 KiB
JavaScript
56 lines
1.7 KiB
JavaScript
// Check that the runtime is up to date
|
|
if (Number(process.version.slice(1).split(".")[0]) < 12) {
|
|
console.error(`Node v12.0.0 or higher is required. You have Node ${process.version}. Please update Node on your system.`);
|
|
process.exit(1);
|
|
}
|
|
|
|
// Load up the discord.js library
|
|
const { Collection, Client } = require("discord.js");
|
|
const sentry = require("@sentry/node");
|
|
|
|
// Our custom client, extends the standard Discord client with things we will need.
|
|
class Custom extends Client {
|
|
constructor (options) {
|
|
super(options);
|
|
|
|
this.path = __dirname;
|
|
this.config = require("../config.json");
|
|
this.logger = require("./util/logger");
|
|
this.util = new (require("./util/util"))(this);
|
|
this.messageUtil = new (require("./util/messageUtil"))(this);
|
|
this.dev = false;
|
|
|
|
if (this.config.devmode === true) {
|
|
this.dev = true;
|
|
}
|
|
|
|
// Create collections to store loaded commands and aliases in
|
|
this.commands = new Collection();
|
|
this.aliases = new Collection();
|
|
|
|
const handlers = require("./util/handlers");
|
|
this.commandHandler = new handlers.CommandHandler(this);
|
|
this.eventHandler = new handlers.EventHandler(this);
|
|
|
|
// Basically just an async shortcut to using a setTimeout. Nothing fancy!
|
|
this.wait = require("util").promisify(setTimeout);
|
|
}
|
|
}
|
|
|
|
// Initialize client
|
|
const client = new Custom();
|
|
/* Enable this later
|
|
if (client.dev !== true) {
|
|
sentry.init({ dsn: client.config.keys.sentry });
|
|
}
|
|
*/
|
|
|
|
client.commandHandler.loadAll();
|
|
client.eventHandler.loadAll();
|
|
|
|
if (client.dev === true) {
|
|
client.logger.warn("Development mode is on. Some features (such as Sentry) are disabled.");
|
|
client.login(client.config.devtoken);
|
|
} else {
|
|
client.login(client.config.token);
|
|
}
|