mirror of
https://github.com/LBRYFoundation/lbry-wunderbot.git
synced 2025-08-23 17:47:27 +00:00
160 lines
5.5 KiB
JavaScript
160 lines
5.5 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, ',');
|
|
}
|
|
}
|
|
};
|