0

I would like to break up my following code into multiple files for management instead of having everything run on the main file. The whole code is located as one Node.js modal know as index.js I would like to break the code up into multiple files management.js and interantion.js and they communicate with node.js

    const Discord = require("discord.js");
const client = new Discord.Client();
const config = require("./config.json");
const ms = require("ms");

client.on("ready", () => {
    console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
    client.user.setGame(config.game);
});
client.on("guildCreate", guild => {
    console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`);
    client.user.setGame(`on ${client.guilds.size} servers`);
});
client.on("guildDelete", guild => {
    console.log(`I have been removed from: ${guild.name} (id: ${guild.id})`);
});

client.on("guildMemberAdd", function(member) {
    //Welcomes a user
    member.guild.channels.find("name", "general").send("Please welcome " + member.toString() + " to the server! " + member.toString() + " Make sure to read the rules and enjoy your stay :heart:." + "   https://imgur.com/a/pCcSm");
});
//managment
client.on("message", async message => {
    if (message.author.bot) return;
    if (message.content.indexOf(config.prefix) !== 0) return;
    const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();
    var mutedrole = message.guild.roles.find("name", "muted");
    //Managment
    if (command === "say") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        const sayMessage = args.join(" ");
        message.delete().catch(O_o => {});
        message.channel.send(sayMessage);
    }
    if (command === "kick") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        let member = message.mentions.members.first();
        if (!member) return message.reply("Please mention a valid member of this server");
        if (!member.kickable) return message.reply("I cannot kick this user! Do they have a higher role? Do I have kick permissions?");
        let reason = args.slice(1).join(' ');
        if (!reason) return message.reply("Please indicate a reason for the kick!");
        await member.kick(reason).catch(error => message.reply(`Sorry ${message.author} I couldn't kick because of : ${error}`));
        message.reply(`${member.user.tag} has been kicked by ${message.author.tag} because: ${reason}`);
    }
    if (command === "ban") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        let member = message.mentions.members.first();
        if (!member) return message.reply("Please mention a valid member of this server");
        if (!member.bannable) return message.reply("I cannot ban this user! Do they have a higher role? Do I have ban permissions?");
        let reason = args.slice(1).join(' ');
        if (!reason) return message.reply("Please indicate a reason for the ban!");
        await member.ban(reason).catch(error => message.reply(`Sorry ${message.author} I couldn't ban because of : ${error}`));
        message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${reason}`);
    }
    if (command === "purge") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        const deleteCount = parseInt(args[0], 10);
        if (!deleteCount || deleteCount < 2 || deleteCount > 100) return message.reply("Please provide a number between 2 and 100 for the number of messages to delete");
        const fetched = await message.channel.fetchMessages({
            count: deleteCount
        });
        message.channel.bulkDelete(fetched).catch(error => message.reply(`Couldn't delete messages because of: ${error}`));
    }

    if (command == "mute") {
        let member = message.mentions.members.first();
        if (!member) return message.reply("Please mention a member");
        let muteRole = message.guild.roles.find("name", "Muted");
        if (!muteRole) return message.reply("Role: Muted not found.");
        let params = message.content.split(" ").slice(1);
        let time = args[1];
        if (!time) return message.reply("Please specify how long the user should be muted.");

        member.addRole(muteRole.id);
        message.channel.send(`You've been muted for ${ms(ms(time), {long: true})}, ${member.user.tag}`);

        setTimeout(function() {
            member.removeRole(muteRole.id);
            message.channel.send(`${member.user.tag} You were unmuted! The mute lasted: ${ms(ms(time), {long: true})}`)
        }, ms(time));
    }
    //interaction

    if (command === "ping") {
        const m = await message.channel.send("Pong");
        m.edit(`Fine here you go >.<! Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ping)}ms`);
    }


    if (command == "drops") {
        message.channel.send("https://docs.google.com/spreadsheets/d/1_SlTjrVRTgHgfS7sRqx4CeJMqlz687HdSlYqiW-JvQA/htmlview?sle=true#gid=0");
    }
});

client.login(config.token);

The result look something like this:

index.js

    const Discord = require("discord.js");
const client = new Discord.Client();
const config = require("./config.json");
const ms = require("ms");
client.on("ready", () => {
    console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
    client.user.setGame(config.game);
});
client.on("guildCreate", guild => {
    console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`);
    client.user.setGame(`on ${client.guilds.size} servers`);
});
client.on("guildDelete", guild => {
    console.log(`I have been removed from: ${guild.name} (id: ${guild.id})`);
});
client.on("guildMemberAdd", function(member) {
    //Welcomes a user
    member.guild.channels.find("name", "general").send("Please welcome " + member.toString() + " to the server! " + member.toString() + " Make sure to read the rules and enjoy your stay :heart:." + "   https://imgur.com/a/pCcSm");
});
//managment
client.on("message", async message => {
    if (message.author.bot) return;
    if (message.content.indexOf(config.prefix) !== 0) return;
    const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
    const command = args.shift().toLowerCase();

});
client.login(config.token); 

managment.js

     //Managment
    if (command === "say") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        const sayMessage = args.join(" ");
        message.delete().catch(O_o => {});
        message.channel.send(sayMessage);
    }
    if (command === "kick") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        let member = message.mentions.members.first();
        if (!member) return message.reply("Please mention a valid member of this server");
        if (!member.kickable) return message.reply("I cannot kick this user! Do they have a higher role? Do I have kick permissions?");
        let reason = args.slice(1).join(' ');
        if (!reason) return message.reply("Please indicate a reason for the kick!");
        await member.kick(reason).catch(error => message.reply(`Sorry ${message.author} I couldn't kick because of : ${error}`));
        message.reply(`${member.user.tag} has been kicked by ${message.author.tag} because: ${reason}`);
    }
    if (command === "ban") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        let member = message.mentions.members.first();
        if (!member) return message.reply("Please mention a valid member of this server");
        if (!member.bannable) return message.reply("I cannot ban this user! Do they have a higher role? Do I have ban permissions?");
        let reason = args.slice(1).join(' ');
        if (!reason) return message.reply("Please indicate a reason for the ban!");
        await member.ban(reason).catch(error => message.reply(`Sorry ${message.author} I couldn't ban because of : ${error}`));
        message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${reason}`);
    }
    if (command === "purge") {
        if (!message.member.roles.some(r => ["Management"].includes(r.name))) return message.reply("Sorry, you don't have permissions to use this!");
        const deleteCount = parseInt(args[0], 10);
        if (!deleteCount || deleteCount < 2 || deleteCount > 100) return message.reply("Please provide a number between 2 and 100 for the number of messages to delete");
        const fetched = await message.channel.fetchMessages({
            count: deleteCount
        });
        message.channel.bulkDelete(fetched).catch(error => message.reply(`Couldn't delete messages because of: ${error}`));
    }
    if (command == "mute") {
        let member = message.mentions.members.first();
        if (!member) return message.reply("Please mention a member");
        let muteRole = message.guild.roles.find("name", "Muted");
        if (!muteRole) return message.reply("Role: Muted not found.");
        let params = message.content.split(" ").slice(1);
        let time = args[1];
        if (!time) return message.reply("Please specify how long the user should be muted.");
        member.addRole(muteRole.id);
        message.channel.send(`You've been muted for ${ms(ms(time), {long: true})}, ${member.user.tag}`);
        setTimeout(function() {
            member.removeRole(muteRole.id);
            message.channel.send(`${member.user.tag} You were unmuted! The mute lasted: ${ms(ms(time), {long: true})}`)
        }, ms(time));
    } 

interaction.js

  //interaction
if (command === "ping") {
    const m = await message.channel.send("Pong");
    m.edit(`Fine here you go >.<! Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(client.ping)}ms`);
}
if (command == "drops") {
    message.channel.send("https://docs.google.com/spreadsheets/d/1_SlTjrVRTgHgfS7sRqx4CeJMqlz687HdSlYqiW-JvQA/htmlview?sle=true#gid=0");
}

I have tried using a required method, but it gives me file not found error.

André
  • 4,417
  • 4
  • 29
  • 56
user9504369
  • 23
  • 1
  • 5
  • It will be easier to spot the problem if you show us the code you tried with the `required method` and the specific text of the error message. – JoshWillik Mar 16 '18 at 17:40
  • Possible duplicate of [How does require() in node.js work?](https://stackoverflow.com/questions/9475792/how-does-require-in-node-js-work) – RaphaMex Apr 20 '18 at 19:14

1 Answers1

0

I'm not entirely sure how you could do this, possibly by using fs or something similar. You could, however, use commando.js rather than discord.js.

Commando.js has one index file for logging in and so on, and then each command is set up into different categories under folders and each command has its own file. It's certainly something to look into.