lbry-wunderbot/bot/modules/stats.js
2017-11-11 10:06:13 -08:00

115 lines
4.2 KiB
JavaScript

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, ",");
}
}
}