let needle = require("needle"); let config = require("config"); let hasHashBotChannels = require("../helpers.js").hasHashBotChannels; let inPrivate = require("../helpers.js").inPrivate; let ChannelID = config.get("hashbot").mainchannel; exports.commands = [ "hash" // command that is in this file, every command needs it own export as shown below ]; exports.custom = ["timedhash"]; exports.timedhash = function(bot) { setInterval(function() { sendMiningInfo(bot); }, 6 * 60 * 60 * 1000); function sendMiningInfo(bot) { needle.get("https://explorer.lbry.io/api/v1/status", function( error, response ) { if (error || response.statusCode !== 200) { msg.channel.send("Explorer API is not available"); } else { var data = response.body; var height = Number(data.status.height); var hashrate = data.status.hashrate; var difficulty = Number(data.status.difficulty); needle.get("https://whattomine.com/coins/164.json", function( error, response ) { if (error || response.statusCode !== 200) { msg.channel.send("whattomine API is not available"); } var data = response.body; var reward = Number(data.block_reward); var block_time = Number(data.block_time); var difficulty24 = Number(data.difficulty24); description = "Hashrate: " + numberWithCommas(hashrate) + "\n" + "Difficulty: " + numberWithCommas(difficulty.toFixed(0)) + "\n" + "Difficulty 24 Hour Average: " + numberWithCommas(difficulty24.toFixed(0)) + "\n" + "Current block: " + numberWithCommas(height.toFixed(0)) + "\n" + "Block Time: " + numberWithCommas(block_time.toFixed(0)) + " seconds \n" + "Block Reward: " + numberWithCommas(reward.toFixed(0)) + " LBC \n" + "Sources: https://explorer.lbry.io & \n" + "https://whattomine.com/coins/164-lbc-lbry"; const embed = { description: description, color: 7976557, author: { name: "LBRY Network Stats", icon_url: "https://i.imgur.com/yWf5USu.png" } }; bot.channels.get(ChannelID).send({ embed }); return; }); } }); function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } } }; exports.hash = { usage: "", description: "Displays current Hashrate of Network\n**!hash power **\n Displays potential Earnings For Given Hashrate", process: function(bot, msg, suffix) { var command = "!hash"; words = suffix .trim() .split(" ") .filter(function(n) { return n !== ""; }); profitcommand = words[0]; myhashrate = words[1]; if (profitcommand == "power") { sendProfitInfo(bot, msg, suffix); return; } else { sendMiningInfo(bot, msg, suffix); return; } function sendMiningInfo(bot, msg, suffix) { if (!inPrivate(msg) && !hasHashBotChannels(msg)) { msg.channel.send( "Please use <#" + ChannelID + "> or DMs to talk to hash bot." ); return; } needle.get("https://explorer.lbry.io/api/v1/status", function( error, response ) { if (error || response.statusCode !== 200) { msg.channel.send("Explorer API is not available"); } else { var data = response.body; var height = Number(data.status.height); var hashrate = data.status.hashrate; var difficulty = Number(data.status.difficulty); needle.get("https://whattomine.com/coins/164.json", function( error, response ) { if (error || response.statusCode !== 200) { msg.channel.send("whattomine API is not available"); } var data = response.body; var reward = Number(data.block_reward); var block_time = Number(data.block_time); var difficulty24 = Number(data.difficulty24); description = "Hashrate: " + numberWithCommas(hashrate) + "\n" + "Difficulty: " + numberWithCommas(difficulty.toFixed(0)) + "\n" + "Difficulty 24 Hour Average: " + numberWithCommas(difficulty24.toFixed(0)) + "\n" + "Current block: " + numberWithCommas(height.toFixed(0)) + "\n" + "Block Time: " + numberWithCommas(block_time.toFixed(0)) + " seconds \n" + "Block Reward: " + numberWithCommas(reward.toFixed(0)) + " LBC \n" + "Sources: https://explorer.lbry.io & \n" + "https://whattomine.com/coins/164-lbc-lbry"; const embed = { description: description, color: 7976557, author: { name: "LBRY Network Stats", icon_url: "https://i.imgur.com/yWf5USu.png" } }; msg.channel.send({ embed }); return; }); } }); } function sendProfitInfo(bot, msg, suffix) { needle.get("https://whattomine.com/coins/164.json", function( error, response ) { if (error || response.statusCode !== 200) { msg.channel.send("whattomine API is not available"); } else { words = suffix .trim() .split(" ") .filter(function(n) { return n !== ""; }); var myhashrate = words[1]; if ( myhashrate == "" || myhashrate == null || myhashrate == undefined || myhashrate == " " ) { myhashrate = "100"; } var Diff = response.body.difficulty24; var Reward = response.body.block_reward; var myHash = Number(myhashrate); var LBC = myHash / 2000 * (1 / ((Diff * 2) ^ 32) * Reward) * 3600; var LBC24 = myHash / 2000 * (1 / ((Diff * 2) ^ 32) * Reward) * 86400; var LBC1w = myHash / 2000 * (1 / ((Diff * 2) ^ 32) * Reward) * 604800; var LBC1m = myHash / 2000 * (1 / ((Diff * 2) ^ 32) * Reward) * 2628000; var message = "With **" + myHash + " Mh/s** and Average 24 hour Difficulty: **" + Diff.toFixed(0) + "**\n" + "You can potentially earn the following amounts of **LBC**: \n" + "1 Hour = **" + LBC.toFixed(4) + "** \n" + "1 Day = **" + LBC24.toFixed(2) + "** \n" + "1 Week = **" + LBC1w.toFixed(4) + "** \n" + "1 Month = **" + LBC1m.toFixed(4) + "** \n"; const embed = { description: message, color: 7976557, author: { name: "Hashing Power Calculator!", icon_url: "https://i.imgur.com/nKHVQgq.png" } }; msg.channel.send({ embed }); return; } }); } function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } } };