Files
JefferyBot/main.js
2018-06-21 18:24:08 +01:00

150 lines
4.4 KiB
JavaScript

const Discord = require('discord.js');
const http = require('http');
const ping = require('ping');
const fs = require('fs');
const colors = require('colors');
const Logger = require('./logger');
const Config = require('./config');
const Commands = require('./commands/commands')
const CommandManager = require('./commandmanager');
const Helper = require('./helper')
const client = new Discord.Client({
autoReconnect:true,
});
Logger.welcome();
/*checks if config exists*/
if (!fs.existsSync('resources/config.json') || !fs.existsSync('resources/servers.json')) {
Logger.log('Creating the config...');
try {
if (!fs.existsSync('resources/')) {
fs.mkdirSync('resources/');
}
Config.loadDefaults();
Config.writeToFile();
Logger.success('Config Successfully created');
Logger.log('Add your bot token to the newly created /resources/config.json to use Jeffery');
process.exit(1);
}
catch (e) {
Logger.warn(`Could not create the config: ${e.message}`);
}
}
/*loads config*/
try {
Logger.log('Loading config...');
Config.loadFromFile();
Logger.success('Congig loaded');
}
catch (e) {
Logger.warn(`Could not load the config: ${e.message}`);
}
/*loads the commands*/
try {
Logger.log('Loading commands...');
CommandManager.loadCommands();
Logger.success('Commands loaded');
} catch (e) {
Logger.warn;(`Could not load the commands: ${e.message}`);
}
/*connects to discord*/
try {
Logger.log('Starting discord client...');
client.login(Config.getconfig().Token);
} catch (e) {
Logger.failed(`Could not connect to discord: ${e.message}`)
}
/*once connected*/
client.on('ready', () => {
try {
Logger.success('Connected to discords API');
/*adds all servers not in config to config*/
Logger.log('Setting up the server spesific commands...')
client.guilds.array().forEach((g) => {
if (!Config.getservers()[g.id]) {
Config.addServer(g);
}
});
Config.writeToFile();
Logger.success('Server commands set up');
Logger.log('Logging in...')
client.user.setPresence('online');
client.user.setActivity(Config.getconfig().NowPlaying);
Logger.success(`Logged in as ${client.user.tag}`);
Logger.log('Ready!');
console.log();
} catch (e) {
Logger.failed(`Somthing went wrong with discords API: ${e.message}`)
}
});
/*on message event*/
client.on('message', async (message) => {
/*if it starts with prefix loaded from config*/
if (message.content.startsWith(Config.getservers()[message.guild.id].prefix)) {
if (message.content.startsWith(';-;') || message.content.startsWith(';_;')) {
return;
}
Logger.logMSG(message);
let msg = message.content.toLowerCase().substring(Config.getservers()[message.guild.id].prefix.length);
let args = message.content.substring(Config.getservers()[message.guild.id].prefix.length).split(' ');
args[0] = args[0].toLowerCase();
/*command manager checks if command exists*/
if (CommandManager.commands[args[0]]) {
/*sends command: message object, messaage full, message args, discord client*/
CommandManager.commands[args[0]].functionReference(message, msg, args, client);
} else {
message.channel.send(`:no_entry_sign: \`The command \'${args[0]}\' does not exist\``);
}
}
});
/*on join server event*/
client.on('guildCreate', async (guild) => {
Logger.log(`JefferyBot was invited to the \'${guild.name}\' server!`);
try {
Logger.log(`Setting up the config for \'${guild.name}\'`)
Config.addServer(guild);
Config.writeToFile();
Logger.success(`Set up the config for the \'${guild.name}\' server`)
} catch (e) {
Logger.failed('Could not set up the server config');
}
});
/*on leave server event*/
client.on('guildDelete', async (guild) => {
Logger.log(`JefferyBot left the \'${guild.name}\' server!`);
});
client.on("guildMemberAdd", async member => {
if (member.guild.id == "443095663018770432") {
let role = member.guild.roles.find(r => r.name === "Regular Joe");
if (!role) {
Logger.log("role not found")
return;
};
if (member.bot) return;
if (member.roles.find(r => r.name === "Regular Joe")) return Logger.warn("User already has role!");
member.addRole(role)
};
});
client.on("disconnected", function () {
Logger.failed('Disconnected...')
process.exit(1);
});
client.on('error', async (error) => {
});