const { prefix } = require('../config.json');

module.exports = {
  name: 'help',
  description: 'Liste toutes les commandes ou donne les informations par rapport à une commande spécifique.',
  aliases: ['commands', 'h'],
  usage: [`\`${prefix}help\``, `\`${prefix}help <nom de la commande>\``],
  cooldown: 5,
  execute(message, args){
    const data = [];
    const {commands} = message.client;

    if(!args.length){
      data.push('Voici la liste de toutes les commandes :');
      data.push(commands.map(command => `\`${command.name}\``).join('\n'));
      data.push(`\nVous pouvez envoyer \`${prefix}help <nom de la commande>\` pour avoir mes informations par rapport à une commande spécifique.`);

      return message.author.send(data, { split: true })
      	.then(() => {
      		if (message.channel.type === 'dm') return;
      		message.reply('Je vous ai envoyé un MP avec la liste des commandes.');
      	})
      	.catch(error => {
      		console.error(`Je n'ai pas su envoyer un MP à ${message.author.tag}.\n`, error);
      		message.reply('Il semblerait que je ne puisse pas vous envoyer un MP. Avez-vous désactivé les MP ?');
      	});
    }

    const name = args[0].toLowerCase();
    const command = commands.get(name) || commands.find(c => c.aliases && c.aliases.includes(name));

    if (!command) {
    	return message.reply('Ce n\'est pas une commande valide !');
    }

    data.push(`**Nom : ** ${command.name}`);

    if (command.aliases) data.push(`**Alias : ** ${command.aliases.join(', ')}`);
    if (command.description) data.push(`**Description : ** ${command.description}`);
    data.push(`**Délai : ** ${command.cooldown || 3} seconde(s)`);

    data.push(`**Usage : ** ${command.usage.join(' ou ')}`)

    message.channel.send(data, { split: true });

  }
}
