From de232b1847a24c0a596ee64dd6aca68b0200c633 Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Wed, 12 Jan 2022 19:56:08 +0000 Subject: [PATCH] Implement getting XMR/BTC rates and total balance --- handler/commands.py | 62 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/handler/commands.py b/handler/commands.py index 9c3cc08..cf09d83 100644 --- a/handler/commands.py +++ b/handler/commands.py @@ -167,8 +167,8 @@ class IRCCommands(object): if accounts_posted == 0: msg("No accounts with balances.") - class total(object): - name = "total" + class balance(object): + name = "balance" authed = True helptext = "Get total account balance from Revolut in USD." @@ -179,6 +179,36 @@ class IRCCommands(object): msg("Error getting total balance.") msg(f"Total: {round(total_usd, 2)}USD") + class total(object): + name = "total" + authed = True + helptext = "Get total account balance from Revolut and Agora." + + @staticmethod + def run(cmd, spl, length, authed, msg, agora, revolut, tx): + total_usd_revolut = revolut.get_total_usd() + if total_usd_revolut is False: + msg("Error getting Revolut balance.") + return + agora_wallet = agora.agora.wallet_balance_xmr() + if not agora_wallet["success"]: + msg("Error getting Agora balance.") + return + total_xmr_agora = agora_wallet["response"]["data"]["total"]["balance"] + # Get the XMR -> USD exchange rate + xmr_usd = agora.cg.get_price(ids="monero", vs_currencies=["USD"]) + + # Convert the Agora XMR total to USD + total_usd_agora = float(total_xmr_agora) * xmr_usd["monero"]["usd"] + total_usd = total_usd_agora + total_usd_revolut + + # Convert the total USD price to GBP and SEK + rates = agora.get_rates_all() + price_sek = rates["SEK"] * total_usd + price_usd = total_usd + price_gbp = rates["GBP"] * total_usd + msg(f"SEK: {price_sek} | USD: {price_usd} | GBP: {price_gbp}") + class ping(object): name = "ping" authed = False @@ -314,7 +344,7 @@ class IRCCommands(object): @staticmethod def run(cmd, spl, length, authed, msg, agora, revolut, tx): - rtrn = agora.update_prices() + rtrn = agora._update_prices() msg(dumps(rtrn)) class ads(object): @@ -327,3 +357,29 @@ class IRCCommands(object): ads = agora.enum_ads() for ad in ads: msg(f"({ad[0]}) {ad[1]} {ad[2]}") + + class xmr(object): + name = "xmr" + authed = True + helptext = "Get current XMR price." + + @staticmethod + def run(cmd, spl, length, authed, msg, agora, revolut, tx): + xmr_prices = agora.cg.get_price(ids="monero", vs_currencies=["sek", "usd", "gbp"]) + price_sek = xmr_prices["monero"]["sek"] + price_usd = xmr_prices["monero"]["usd"] + price_gbp = xmr_prices["monero"]["gbp"] + msg(f"SEK: {price_sek} | USD: {price_usd} | GBP: {price_gbp}") + + class btc(object): + name = "btc" + authed = True + helptext = "Get current BTC price." + + @staticmethod + def run(cmd, spl, length, authed, msg, agora, revolut, tx): + xmr_prices = agora.cg.get_price(ids="bitcoin", vs_currencies=["sek", "usd", "gbp"]) + price_sek = xmr_prices["bitcoin"]["sek"] + price_usd = xmr_prices["bitcoin"]["usd"] + price_gbp = xmr_prices["bitcoin"]["gbp"] + msg(f"SEK: {price_sek} | USD: {price_usd} | GBP: {price_gbp}")