let needle = require('needle'); let hasPriceBotChannels = require('../helpers.js').hasPriceBotChannels; let inPrivate = require('../helpers.js').inPrivate; let config = require('config'); let ChannelID = config.get('pricebot').mainchannel; exports.commands = ['altprice']; exports.altprice = { usage: ' ', description: 'display price of specified alt coin from crypto compare\n**Example:** *!altprice ETH USD 100*', process: function(bot, msg, suffix) { let dt = new Date(); let timestamp = dt.toUTCString(); if (!hasPriceBotChannels(msg) && !inPrivate(msg)) { msg.channel.send('Please use <#' + ChannelID + '> or DMs to talk to price bot.'); return; } if (suffix !== '') { words = suffix .trim() .split(' ') .filter(function(n) { return n !== ''; }); var currency1 = words[0].toUpperCase(); if (words[1] == undefined) { var currency2 = 'BTC'; } else { var currency2 = words[1].toUpperCase(); } if (words[2] == undefined) { var amount = '1'; } else { if (getValidatedAmount(words[2]) === null) { msg.reply('Please specify a number for '); return; } var amount = words[2].toUpperCase(); } } else { var currency1 = 'BTC'; var currency2 = 'USD'; var amount = '1'; } needle.get('https://min-api.cryptocompare.com/data/all/coinlist', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { if (!response.body.Data.hasOwnProperty(currency1)) { msg.channel.send('Invalid Alt Coin'); return; } needle.get('https://min-api.cryptocompare.com/data/price?fsym=' + currency1 + '&tsyms=' + currency2, function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { var price = Number(response.body[currency2]); var newprice = price * amount; var message = amount + ' ' + currency1 + ' = ' + newprice.toFixed(8) + ' ' + currency2 + '\n' + '*Updated: ' + timestamp + '*'; msg.channel.send(message); } }); } }); function getValidatedAmount(amount) { amount = amount.trim(); return amount.match(/^[0-9]+(\.[0-9]+)?$/) ? amount : null; } } };