From 516d0737cab6404c3bd44e1929b627edf83f8149 Mon Sep 17 00:00:00 2001 From: YULIUS KURNIAWAN KRISTIANTO Date: Wed, 9 Oct 2019 22:42:32 +0700 Subject: [PATCH 1/5] change api from coinmarketcap to coingecko --- bot/modules/stats.js | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/bot/modules/stats.js b/bot/modules/stats.js index 8dd774e..e3af7ff 100644 --- a/bot/modules/stats.js +++ b/bot/modules/stats.js @@ -8,20 +8,20 @@ exports.stats = { usage: '', description: 'Displays list of current Market stats', process: function(bot, msg) { - needle.get('https://api.coinmarketcap.com/v2/ticker/1298/?convert=BTC', function(error, response) { + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false&price_change_percentage=24h%2C1h%2C7d +', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { let data = response.body.data; - let rank = data.rank; - let price_usd = Number(data.quotes.USD.price); - let price_btc = Number(data.quotes.BTC.price); + let rank = data.market_cap_rank; + let price_btc = Number(data.current_price); let market_cap_usd = Number(data.quotes.USD.market_cap); let circulating_supply = Number(data.circulating_supply); let total_supply = Number(data.total_supply); - let percent_change_1h = Number(data.quotes.USD.percent_change_1h); - let percent_change_24h = Number(data.quotes.USD.percent_change_24h); - let volume24_usd = Number(data.quotes.USD.volume_24h); + let percent_change_1h = Number(data.price_change_percentage_1h_in_currency); + let percent_change_24h = Number(data.price_change_percentage_24h_in_currency); + let volume24_btc = Number(data.total_volume); let dt = new Date(); let timestamp = dt.toUTCString(); let hr_indicator = ':thumbsup:'; @@ -33,18 +33,24 @@ exports.stats = { day_indicator = ':thumbsdown:'; } - needle.get('https://api.coinmarketcap.com/v2/ticker/1298/?convert=GBP', function(error, response) { + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=gbp&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { data = response.body.data; - let price_gbp = Number(data.quotes.GBP.price); - needle.get('https://api.coinmarketcap.com/v2/ticker/1298/?convert=EUR', function(error, response) { + let price_gbp = Number(data.current_price); + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=eur&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coinmarketcap API is not available'); } else { data = response.body.data; - let price_eur = Number(data.quotes.EUR.price); + let price_eur = Number(data.current_price); + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { + if (error || response.statusCode !== 200) { + msg.channel.send('coinmarketcap API is not available'); + } else { + data = response.body.data; + let price_usd = Number(data.current_price); let description = `**Rank: [${rank}](${statsurl})** **Data** Market Cap: [$${numberWithCommas(market_cap_usd)}](${statsurl}) From 4802cebf63568671d536dc669cf20ab841774241 Mon Sep 17 00:00:00 2001 From: YULIUS KURNIAWAN KRISTIANTO Date: Wed, 9 Oct 2019 23:39:37 +0700 Subject: [PATCH 2/5] Update stats.js --- bot/modules/stats.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bot/modules/stats.js b/bot/modules/stats.js index e3af7ff..20d2c7d 100644 --- a/bot/modules/stats.js +++ b/bot/modules/stats.js @@ -11,12 +11,12 @@ exports.stats = { needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false&price_change_percentage=24h%2C1h%2C7d ', function(error, response) { if (error || response.statusCode !== 200) { - msg.channel.send('coinmarketcap API is not available'); + msg.channel.send('coingecko API is not available'); } else { let data = response.body.data; let rank = data.market_cap_rank; let price_btc = Number(data.current_price); - let market_cap_usd = Number(data.quotes.USD.market_cap); + let market_cap_btc = Number(data.quotes.market_cap); let circulating_supply = Number(data.circulating_supply); let total_supply = Number(data.total_supply); let percent_change_1h = Number(data.price_change_percentage_1h_in_currency); @@ -35,19 +35,19 @@ exports.stats = { needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=gbp&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { if (error || response.statusCode !== 200) { - msg.channel.send('coinmarketcap API is not available'); + msg.channel.send('coingecko API is not available'); } else { data = response.body.data; let price_gbp = Number(data.current_price); needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=eur&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { if (error || response.statusCode !== 200) { - msg.channel.send('coinmarketcap API is not available'); + msg.channel.send('coingecko API is not available'); } else { data = response.body.data; - let price_eur = Number(data.current_price); + let price_eur\ = Number(data.current_price); needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { if (error || response.statusCode !== 200) { - msg.channel.send('coinmarketcap API is not available'); + msg.channel.send('coingecko API is not available'); } else { data = response.body.data; let price_usd = Number(data.current_price); From 5f825b9156594b49f1eefdf57e29138d898c2b2c Mon Sep 17 00:00:00 2001 From: YULIUS KURNIAWAN KRISTIANTO Date: Wed, 9 Oct 2019 23:41:33 +0700 Subject: [PATCH 3/5] update as niko request --- bot/modules/stats.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/modules/stats.js b/bot/modules/stats.js index 20d2c7d..428878a 100644 --- a/bot/modules/stats.js +++ b/bot/modules/stats.js @@ -44,7 +44,7 @@ exports.stats = { msg.channel.send('coingecko API is not available'); } else { data = response.body.data; - let price_eur\ = Number(data.current_price); + let price_eur = Number(data.current_price); needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { if (error || response.statusCode !== 200) { msg.channel.send('coingecko API is not available'); From 28e95245b0c5ccc9752886718721eaeb9c35ae76 Mon Sep 17 00:00:00 2001 From: Ralph Date: Wed, 9 Oct 2019 20:28:26 -0400 Subject: [PATCH 4/5] Closed string to resolve travis build --- bot/modules/stats.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot/modules/stats.js b/bot/modules/stats.js index 428878a..6cfe1ec 100644 --- a/bot/modules/stats.js +++ b/bot/modules/stats.js @@ -8,8 +8,8 @@ exports.stats = { usage: '', description: 'Displays list of current Market stats', process: function(bot, msg) { - needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false&price_change_percentage=24h%2C1h%2C7d -', function(error, response) { + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false&price_change_percentage=24h%2C1h%2C7d', function(error, response) + { if (error || response.statusCode !== 200) { msg.channel.send('coingecko API is not available'); } else { From 61ee16ce6423f8f46bddfd09bf00024de510d8f7 Mon Sep 17 00:00:00 2001 From: Ralph Date: Wed, 9 Oct 2019 20:37:54 -0400 Subject: [PATCH 5/5] Resolved syntax issues. --- bot/modules/stats.js | 203 +++++++++++++++++++++---------------------- 1 file changed, 101 insertions(+), 102 deletions(-) diff --git a/bot/modules/stats.js b/bot/modules/stats.js index 6cfe1ec..e30e447 100644 --- a/bot/modules/stats.js +++ b/bot/modules/stats.js @@ -1,113 +1,112 @@ let needle = require('needle'); 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 + '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.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false&price_change_percentage=24h%2C1h%2C7d', function(error, response) - { - if (error || response.statusCode !== 200) { - msg.channel.send('coingecko API is not available'); - } else { - let data = response.body.data; - let rank = data.market_cap_rank; - let price_btc = Number(data.current_price); - let market_cap_btc = Number(data.quotes.market_cap); - let circulating_supply = Number(data.circulating_supply); - let total_supply = Number(data.total_supply); - let percent_change_1h = Number(data.price_change_percentage_1h_in_currency); - let percent_change_24h = Number(data.price_change_percentage_24h_in_currency); - let volume24_btc = Number(data.total_volume); - let dt = new Date(); - let timestamp = dt.toUTCString(); - let hr_indicator = ':thumbsup:'; - let day_indicator = ':thumbsup:'; - if (percent_change_1h < 0) { - hr_indicator = ':thumbsdown:'; - } - if (percent_change_24h < 0) { - day_indicator = ':thumbsdown:'; - } - - needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=gbp&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { - if (error || response.statusCode !== 200) { - msg.channel.send('coingecko API is not available'); - } else { - data = response.body.data; - let price_gbp = Number(data.current_price); - needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=eur&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { - if (error || response.statusCode !== 200) { + usage: '', + description: 'Displays list of current Market stats', + process: function(bot, msg) { + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false&price_change_percentage=24h%2C1h%2C7d', function(error, response) { + if (error || response.statusCode !== 200) { msg.channel.send('coingecko API is not available'); - } else { - data = response.body.data; - let price_eur = Number(data.current_price); - needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function(error, response) { - if (error || response.statusCode !== 200) { - msg.channel.send('coingecko API is not available'); - } else { - data = response.body.data; - let price_usd = Number(data.current_price); - let description = `**Rank: [${rank}](${statsurl})** -**Data** -Market Cap: [$${numberWithCommas(market_cap_usd)}](${statsurl}) -Total Supply: [${numberWithCommas(total_supply)} LBC](${statsurl}) -Circulating Supply: [${numberWithCommas(circulating_supply)} LBC](${statsurl}) -24 Hour Volume: [$${volume24_usd}](${statsurl}) + } else { + let data = response.body.data; + let rank = data.market_cap_rank; + let price_btc = Number(data.current_price); + let market_cap_btc = Number(data.quotes.market_cap); + let circulating_supply = Number(data.circulating_supply); + let total_supply = Number(data.total_supply); + let percent_change_1h = Number(data.price_change_percentage_1h_in_currency); + let percent_change_24h = Number(data.price_change_percentage_24h_in_currency); + let volume24_btc = Number(data.total_volume); + let dt = new Date(); + let timestamp = dt.toUTCString(); + let hr_indicator = ':thumbsup:'; + let day_indicator = ':thumbsup:'; + if (percent_change_1h < 0) { + hr_indicator = ':thumbsdown:'; + } + if (percent_change_24h < 0) { + day_indicator = ':thumbsdown:'; + } -**Price** -BTC: [₿${price_btc.toFixed(8)}](${statsurl}) -USD: [$${price_usd.toFixed(2)}](${statsurl}) -EUR: [€${price_eur.toFixed(2)}](${statsurl}) -GBP: [£${price_gbp.toFixed(2)}](${statsurl}) + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=gbp&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function (error, response) { + if (error || response.statusCode !== 200) { + msg.channel.send('coingecko API is not available'); + } else { + data = response.body.data; + let price_gbp = Number(data.current_price); + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=eur&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function (error, response) { + if (error || response.statusCode !== 200) { + msg.channel.send('coingecko API is not available'); + } else { + data = response.body.data; + let price_eur = Number(data.current_price); + needle.get('https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=lbry-credits&order=market_cap_desc&per_page=100&page=1&sparkline=false', function (error, response) { + if (error || response.statusCode !== 200) { + msg.channel.send('coingecko API is not available'); + } else { + data = response.body.data; + let price_usd = Number(data.current_price); + let description = `**Rank: [${rank}](${statsurl})** + **Data** + Market Cap: [$${numberWithCommas(market_cap_usd)}](${statsurl}) + Total Supply: [${numberWithCommas(total_supply)} LBC](${statsurl}) + Circulating Supply: [${numberWithCommas(circulating_supply)} LBC](${statsurl}) + 24 Hour Volume: [$${volume24_usd}](${statsurl}) + + **Price** + BTC: [₿${price_btc.toFixed(8)}](${statsurl}) + USD: [$${price_usd.toFixed(2)}](${statsurl}) + EUR: [€${price_eur.toFixed(2)}](${statsurl}) + GBP: [£${price_gbp.toFixed(2)}](${statsurl}) + + **% Change** + 1 Hour: [${percent_change_1h}](${statsurl}) ${hr_indicator} + + 1 Day: [${percent_change_24h}](${statsurl}) ${day_indicator}`; + const embed = { + description: description, + color: 7976557, + footer: { + text: 'Last Updated: ' + timestamp + }, + author: { + name: 'Coin Market Cap Stats (LBC)', + url: statsurl, + icon_url: 'https://spee.ch/2/pinkylbryheart.png' + } + }; + msg.channel.send({embed}); + } + }); + } + }); + } + }); -**% Change** -1 Hour: [${percent_change_1h}](${statsurl}) ${hr_indicator} + function parse_obj(obj) { + let array = []; + let prop; + for (prop in obj) { + if (obj.hasOwnProperty(prop)) { + let key = parseInt(prop, 10); + let value = obj[prop]; + if (typeof value == 'object') { + value = parse_obj(value); + } + array[key] = value; + } + } + return array; + } -1 Day: [${percent_change_24h}](${statsurl}) ${day_indicator} - -`; - const embed = { - description: description, - color: 7976557, - footer: { - text: 'Last Updated: ' + timestamp - }, - author: { - name: 'Coin Market Cap Stats (LBC)', - url: statsurl, - icon_url: 'https://spee.ch/2/pinkylbryheart.png' - } - }; - msg.channel.send({ embed }); - } - }); - } - }); - } - }); - - function parse_obj(obj) { - let array = []; - let prop; - for (prop in obj) { - if (obj.hasOwnProperty(prop)) { - let key = parseInt(prop, 10); - let 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, ','); + } + } + }) } - - function numberWithCommas(x) { - return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); - } - } -}; +}