Spot/bot.js

43 lines
1.2 KiB
JavaScript
Raw Normal View History

2021-05-02 20:00:36 -04:00
const Logger = require('@lilywonhalf/pretty-logger');
2021-10-20 11:45:50 -04:00
const { Client } = require('discord.js');
const Config = require('./config.json');
const Command = require('./model/command');
const fs = require('fs');
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
global.bot = new Client({ fetchAllMembers: true });
global.isRightGuild = (guildSnowflake) => guildSnowflake === Config.guild;
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
const crashRecover = (exception) => {
Logger.exception(exception);
Logger.notice('Need reboot');
};
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
process.on('uncaughtException', crashRecover);
bot.on('error', crashRecover);
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
Command.init();
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
const help = require("./command/help");
bot.ws.on('INTERACTION_CREATE', help.interactionHandler);
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
bot.on('ready', () => {
fs.readdirSync('./event/')
.filter(filename => filename.endsWith('.js'))
.map(filename => filename.substr(0, filename.length - 3))
.forEach(filename => {
const event = filename.replace(/([_-][a-z])/gu, character => `${character.substr(1).toUpperCase()}`);
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
if (filename !== 'ready') {
bot.on(event, require(`./event/${filename}`));
} else {
require(`./event/${filename}`)();
2021-05-02 20:00:36 -04:00
}
});
2021-10-20 11:45:50 -04:00
});
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
Logger.info('--------');
2021-05-02 20:00:36 -04:00
2021-10-20 11:45:50 -04:00
Logger.info('Logging in...');
2021-10-20 12:42:24 -04:00
bot.login(process.env.token);