From 8b8007cb6cf67ca74243c529d614418ec45a4346 Mon Sep 17 00:00:00 2001
From: Loic Bersier <loic.bersier1@gmail.com>
Date: Tue, 18 Sep 2018 20:32:33 +0200
Subject: [PATCH] Events are now in a separated folder

---
 events/message.js | 15 +++++++++++
 events/ready.js   | 12 +++++++++
 index.js          | 67 ++++++++++++++---------------------------------
 3 files changed, 46 insertions(+), 48 deletions(-)
 create mode 100644 events/message.js
 create mode 100644 events/ready.js

diff --git a/events/message.js b/events/message.js
new file mode 100644
index 00000000..490d52c8
--- /dev/null
+++ b/events/message.js
@@ -0,0 +1,15 @@
+const responseObject = require("../reply.json");
+const { Permissions } = require('discord.js');
+const flags = [
+    'SEND_MESSAGES'
+];
+const permissions = new Permissions(flags);
+
+module.exports = (client, message) => {
+    //  Auto respond to messages
+            let message_content = message.content.toLowerCase();
+            if(responseObject[message_content]) {
+              message.channel.send(responseObject[message_content]);
+            };
+    
+}
diff --git a/events/ready.js b/events/ready.js
new file mode 100644
index 00000000..88ecc905
--- /dev/null
+++ b/events/ready.js
@@ -0,0 +1,12 @@
+module.exports = (client) => {
+    const { botID, statsChannel } = require('../config.json');
+    //  Send stats to the console
+    console.log(`Logged in as ${client.user.tag}! (${client.user.id})`);
+    console.log(`Ready to serve in ${client.channels.size} channels on ${client.guilds.size} servers, for a total of ${client.users.size} users. ${client.readyAt}`);
+    //  Send stats to the "stats" channel in the support server if its not the test bot
+    if (client.user.id == botID) {
+    const channel = client.channels.get(statsChannel);
+    channel.send(`Ready to serve in ${client.channels.size} channels on ${client.guilds.size} servers, for a total of ${client.users.size} users. ${client.readyAt}`);
+    }
+    client.user.setActivity('"haha help" or "@me help" for help');
+}
\ No newline at end of file
diff --git a/index.js b/index.js
index 768e21af..ae4bd1d7 100644
--- a/index.js
+++ b/index.js
@@ -1,7 +1,6 @@
-const { CommandoClient } = require('discord.js-commando');
+const { CommandoClient, Command } = require('discord.js-commando');
 const path = require('path');
-const { token, prefix, botID, statsChannel, ownerID, supportServer } = require('./config.json');
-const responseObject = require("./reply.json");
+const { token, prefix, ownerID, supportServer } = require('./config.json');
 const fs = require("fs");
 
 //  Prefix and ownerID and invite to support server
@@ -24,52 +23,24 @@ client.registry
     .registerDefaultGroups()
     .registerDefaultCommands()
     .registerCommandsIn(path.join(__dirname, 'commands'));
-//  Ready messages
-    client.on('ready', () => {
-//  Send stats to the console
-        console.log(`Logged in as ${client.user.tag}! (${client.user.id})`);
-        console.log(`Ready to serve in ${client.channels.size} channels on ${client.guilds.size} servers, for a total of ${client.users.size} users. ${client.readyAt}`);
-//  Send stats to the "stats" channel in the support server if its not the test bot
-        if (client.user.id == botID) {
-        const channel = client.channels.get(statsChannel);
-        channel.send(`Ready to serve in ${client.channels.size} channels on ${client.guilds.size} servers, for a total of ${client.users.size} users. ${client.readyAt}`);
-        }
-        client.user.setActivity('"haha help" or "@me help" for help');
-});
-//  When bot join a guild send embeds with details about it.
-    client.on("guildCreate", guild => {
-        console.log(`${guild.name}\n${guild.memberCount} users\nOwner: ${guild.owner}`);
-        const channel = client.channels.get(statsChannel);
-        const addEmbed = {
-            color: 0x008000,
-            title: 'Someone added the bot! :D YAY',
-            description: `${guild.name}\n${guild.memberCount} users\nOwner: ${guild.owner}`,
-            timestamp: new Date(),
-        };
-        
-        channel.send({ embed: addEmbed });
-    })
-//  When bot get kicked from a guild send embeds with details about it.
-    client.on("guildDelete", guild => {
-        console.log(`***BOT KICKED***\n${guild.name}\n${guild.memberCount} users\nOwner: ${guild.owner}\n***BOT KICKED***`);
-        const channel = client.channels.get(statsChannel);
-        const kickEmbed = {
-            color: 0xFF0000,
-            title: 'Someone removed the bot :(',
-            description: `${guild.name}\n${guild.memberCount} users\nOwner: ${guild.owner}`,
-            timestamp: new Date(),
-        };
-        
-        channel.send({ embed: kickEmbed });
-    })
 
-//  Auto respond to messages
-//    client.on("message", (message) => {
-//        let message_content = message.content.toLowerCase();
-//        if(responseObject[message_content]) {
-//          message.channel.send(responseObject[message_content]);
-//        }
-//      });
+fs.readdir("./events/", (err, files) => {
+    if (err) return console.error(err);
+    files.forEach(file => {
+      // If the file is not a JS file, ignore it (thanks, Apple)
+      if (!file.endsWith(".js")) return;
+      // Load the event file itself
+      const event = require(`./events/${file}`);
+      // Get just the event name from the file name
+      let eventName = file.split(".")[0];
+      // super-secret recipe to call events with all their proper arguments *after* the `client` var.
+      // without going into too many details, this means each event will be called with the client argument,
+      // followed by its "normal" arguments, like message, member, etc etc.
+      // This line is awesome by the way. Just sayin'.
+      client.on(eventName, event.bind(null, client));
+      delete require.cache[require.resolve(`./events/${file}`)];
+    });
+  });
 
     client.on('error', console.error);