let jp = require('jsonpath'); let moment = require('moment'); let numeral = require('numeral'); let request = require('request'); let config = require('config'); let needle = require('needle'); let hasStatsBotChannels = require('../helpers.js').hasStatsBotChannels; let inPrivate = require('../helpers.js').inPrivate; let ChannelID = config.get('statsbot').mainchannel; let statsurl = "https://coinmarketcap.com/currencies/library-credit/" exports.commands = [ "stats" // command that is in this file, every command needs it own export as shown below ] exports.stats = { usage: "", description: 'Displays list of current Market stats', process: function(bot,msg){ needle.get('https://api.coinmarketcap.com/v1/ticker/library-credit/', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { var data = response.body[0]; var rank = data.rank var price_usd = Number(data.price_usd) var price_btc = Number(data.price_btc) var market_cap_usd = Number(data.market_cap_usd) var available_supply = Number(data.available_supply) var total_supply = Number(data.total_supply) var percent_change_1h = Number(data.percent_change_1h) var percent_change_24h = Number(data.percent_change_24h) var json = response.body[0]; var newjson = parse_obj(json) var parse = JSON.stringify(newjson) var volume24_usd = parse.replace(/[^0-9]/g, ''); var dt = new Date(); var timestamp = dt.toUTCString(); var hr_indicator = ":thumbsup:" var day_indicator =":thumbsup:" if (percent_change_1h < 0) { hr_indicator = ":thumbsdown:" } if (percent_change_24h < 0) { day_indicator = ":thumbsdown:" } needle.get('https://api.coinmarketcap.com/v1/ticker/library-credit/?convert=GBP', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { var data = response.body[0]; var price_gbp = Number(data.price_gbp) needle.get('https://api.coinmarketcap.com/v1/ticker/library-credit/?convert=EUR', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { var data = response.body[0]; var price_eur = Number(data.price_eur) description = "**Rank: ["+rank+"]("+statsurl+")**\n" + "**Data**\n" + "Market Cap: [$"+numberWithCommas(market_cap_usd)+"]("+statsurl+") \n" + "Total Supply: ["+numberWithCommas(total_supply)+" LBC]("+statsurl+")\n" + "Circulating Supply: ["+numberWithCommas(available_supply)+" LBC]("+statsurl+")\n" + "24 Hour Volume: [$"+volume24_usd+"]("+statsurl+") \n\n" + "**Price**\n" + "BTC: [₿"+price_btc.toFixed(8)+"]("+statsurl+")\n" + "USD: [$"+price_usd.toFixed(2)+"]("+statsurl+") \n" + "EUR: [€"+price_eur.toFixed(2)+"]("+statsurl+") \n" + "GBP: [£"+price_gbp.toFixed(2)+"]("+statsurl+") \n\n" + "**% Change**\n" + "1 Hour: ["+percent_change_1h+"]("+statsurl+") "+hr_indicator+" \n\n" + "1 Day: ["+percent_change_24h+"]("+statsurl+") "+day_indicator+" \n\n" const embed = { "description": description, "color": 7976557, "footer": { "text": "Last Updated: "+timestamp }, "author": { "name": "Coin Market Cap Stats (LBC)", "url": statsurl, "icon_url": "https://i.imgur.com/yWf5USu.png" } }; msg.channel.send({ embed }) } }) } }) } }) function parse_obj(obj) { var array = []; var prop; for (prop in obj) { if (obj.hasOwnProperty(prop)) { var key = parseInt(prop, 10); var value = obj[prop]; if (typeof value == "object") { value = parse_obj(value); } array[key] = value; } } return array; } function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } } }