All files insult.js

100% Statements 10/10
100% Branches 0/0
100% Functions 4/4
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50          1x 1x                             3x                   3x   3x     2x 2x       2x 2x       3x      
/**
 * Have butlerbot insult another member of the discord channel on your behalf.
 * @module insult
 * @return {Object} - string (as a message to discord text channel)
 */
const axios = require('axios');
module.exports = {
	name: 'insult',
    description: 'Insult your target.',
    aliases: ['burn'],
    usage: '@recipient',
    args: true,
    cooldown: 1,
    /**
     * @method execute
     * @param {string} message - command, used to determine which channel to return results
     * @param {string} args - recipient of insult message sent to channel; required
     * @return {string} selected insult with correct formatting and recipient
     */  
    execute(message,args) {   
      /** @var {string} insultApi */  
      let insultApi = 'https://evilinsult.com/generate_insult.php?lang=en&type=json';
 
      /** 
       * @function getApology
       * @async
       * @return {Object} insult
       * @summary selection of random insult from api call
       */       
      function insultMessage(api) {
        // to make it look like butlerbot is thinking about it
        message.channel.startTyping();
        // grab an insult from this api
        axios.get(api)
          .then(response => {
            // append our target to the insult
            let res = response.data.insult.replace(/"/g, '\\"').replace(/&/g, '\\&\\').replace(/>/g, '\\>\\');
            message.channel.send(args[0].concat(', ', res));
        })
        .then(message.channel.stopTyping(true))
        .catch(error => {
          console.log(error);
          return message.channel.send(`I am unable to pity the fool, sorry master ${message.author}`);
        }); 
      }
      // grab the insult and return the results
      insultMessage(insultApi);
    }
};