import { Command, CommandoMessage, CommandoClient } from 'discord.js-commando'; //@ts-ignore no types import emoji from 'emoji-random' import { formatDistance, formatRelative } from 'date-fns' //TODO: check if this has types //@ts-ignore no types import { stripIndents } from 'common-tags' module.exports = class AverageUtility extends Command { constructor(client: CommandoClient) { super(client, { name: 'average', aliases: [ 'average-number', 'averagenumber', 'average-num', 'averagenum' ], group: 'utility', memberName: 'average', description: 'Gets the average of specified numbers.', examples: ['uwu!average 10 20 30 40 50'], throttling: { usages: 5, duration: 30 }, userPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], clientPermissions: ['SEND_MESSAGES', 'READ_MESSAGE_HISTORY'], args: [ { key: 'nNum', prompt: 'What\'s another number you would like to average?', type: 'float', label: 'number', infinite: true } ] }); } async run(msg: CommandoMessage, { nNum }: any) { // this is really a string if (nNum.length < 2) msg.reply('Please provide **2** or more numbers.') const reducer = (accumulator: any, currentValue: any) => accumulator + currentValue return msg.reply(`The average of the specified numbers is ${nNum.reduce(reducer) / nNum.length}.` + ' ' + emoji.random()) } };