Advertisement
Guest User

functions.js

a guest
Jun 19th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const { RichEmbed } = require("discord.js"),
  2.     { readdir } = require("fs");
  3.  
  4. module.exports = class Functions {
  5.     constructor(client) {
  6.         this.client = client;
  7.     };
  8.  
  9.     async init_client() {
  10.         this.client.login(this.client.config.token);
  11.  
  12.         await readdir("./events", (err, files) => {
  13.             if(err) {
  14.                 return this.client.logger.error(err);
  15.             }
  16.  
  17.             else if(files.length <= 0) {
  18.                 return this.client.logger.warn("Veuillez mettre des events dans le dossier !");
  19.             };
  20.  
  21.             const events = files.filter((ext) => ext.split(".").pop() === "js");
  22.  
  23.             this.client.logger.info(`J'ai chargé ${events.length} événements !`);
  24.  
  25.            events.forEach((evt) => {
  26.                const event = new(require(`../events/${evt}`))(this.client),
  27.                    event_name = evt.split(".")[0];
  28.  
  29.                this.client.on(event_name, (...args) => event.run(...args));
  30.  
  31.                delete require.cache[require.resolve(`../events/${evt}`)];
  32.            });
  33.        });
  34.  
  35.        await readdir("./commands", (err, files) => {
  36.            if(err) {
  37.                return this.client.logger.error(err);
  38.            }
  39.  
  40.            else if(files.length <= 0) {
  41.                return this.client.logger.warn("Veuillez mettre des sous dossiers dans le dossier des commandes !");
  42.            };
  43.  
  44.            const categories = [];
  45.  
  46.            files.forEach((subfolder) => {
  47.                if(!subfolder.includes(".")) categories.push(subfolder);
  48.            });
  49.  
  50.            categories.forEach(async(folder) => {
  51.                await readdir(`./commands/${folder}`, (err0, files0) => {
  52.                    if(err0) {
  53.                        return this.client.logger.error(err);
  54.                    }
  55.  
  56.                    else if(files0.length <= 0) {
  57.                        return this.client.logger.warn(`Veuillez mettre des commandes dans le dossier "./commands/${folder}" !`);
  58.                    };
  59.  
  60.                    const commands = files0.filter((ext) => ext.split(".").pop() === "js");
  61.  
  62.                    commands.forEach((command) => {
  63.                        const cmd = new(require(`../commands/${folder}/${command}`))(this.client);
  64.  
  65.                        this.client.commands.set(cmd.help.name, cmd);
  66.  
  67.                        cmd.help.aliases.forEach((alias) => {
  68.                            this.client.aliases.set(alias, cmd.help.name);
  69.                        });
  70.  
  71.                        delete require.cache[require.resolve(`../commands/${folder}/${command}`)];
  72.                    });
  73.                });
  74.            });
  75.        });
  76.    };
  77.  
  78.    init_guild(guild) {
  79.        this.client.databases.guild.ensure(guild.id, {
  80.            prefix: this.client.config.prefix,
  81.            default_reason: "des raisons que le staff n'a pas décidé d'évoquer.",
  82.            case_count: 0
  83.        });
  84.    };
  85.  
  86.    /*init_user(user) {
  87.        this.client.databases.user.ensure(user.id, {
  88.  
  89.        });
  90.    };*/
  91.  
  92.    init_cooldown(user) {
  93.        const cmd_name = this.client.commands.forEach((cmd) => cmd.help.name);
  94.  
  95.        this.client.databases.cooldown.ensure(user.id, {
  96.            cmd_name: 0
  97.        });
  98.    };
  99.  
  100.    commands_logs(user, guild, channel, cmd, content) {
  101.        const embed = new RichEmbed()
  102.            .setColor(this.client.config.embed.color)
  103.            .setAuthor(`Commande ${cmd.help.name} exécutée par ${user.username}`, user.displayAvatarURL)
  104.            .setThumbnail(guild.iconURL)
  105.            .addField("Utilisateur", `${user.tag} (${user.id})`)
  106.            .addField("Serveur", `${guild.name} (${guild.id})`)
  107.            .addField("Salon", `#${channel.name} (${channel.id})`)
  108.            .addField("Contenu du message", content)
  109.            .setTimestamp()
  110.            .setFooter(this.client.config.embed.footer, this.client.user.displayAvatarURL);
  111.  
  112.        this.client.channels.get(this.client.config.channels.commands_logs).send(embed);
  113.    };
  114. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement