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; } } };