From 42dbccf0435bb0c5b12de8ef3e41c51e5cf419dc Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Sun, 13 Feb 2022 09:56:22 +0000 Subject: [PATCH] Account trades for withdrawal calculation and fix cheat for multiple providers --- handler/agora.py | 15 ++++++++++----- handler/commands.py | 24 +++++++++++++++++++++--- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/handler/agora.py b/handler/agora.py index 99a5ecc..a2d2766 100644 --- a/handler/agora.py +++ b/handler/agora.py @@ -423,6 +423,8 @@ class Agora(object): def update_prices(self, assets=None): # Get all public ads for the given assets public_ads = self.get_all_public_ads(assets) + if not public_ads: + return False # Get the ads to update to_update = self.markets.get_new_ad_equations(public_ads, assets) @@ -449,7 +451,6 @@ class Agora(object): if not providers: providers = self.markets.get_all_providers() # We want to get the ads for each of these currencies and return the result - rates = self.cg.get_price(ids=["monero", "bitcoin"], vs_currencies=currencies) for asset in assets: for currency in currencies: @@ -460,6 +461,8 @@ class Agora(object): self.log.error("Error getting public ads for currency {currency}", currency=currency) continue ads_list = self.enum_public_ads(asset, currency, providers) + if not ads_list: + continue ads = self.lookup_rates(ads_list, rates=rates) if not ads: continue @@ -469,6 +472,7 @@ class Agora(object): public_ads[currency].append(ad) else: public_ads[currency] = ads + return public_ads def slow_ad_update(self, ads): @@ -486,7 +490,6 @@ class Agora(object): ad_id, new_formula, asset, currency, actioned = ads[ad_index] assets.add(asset) currencies.add(currency) - self.log.error("ASSET {a}", a=asset) if not actioned: rtrn = self.agora.ad_equation(ad_id, new_formula) if rtrn["success"]: @@ -732,7 +735,7 @@ class Agora(object): @handle_exceptions def withdraw_funds(self): """ - Withdraw excess funds to our XMR/BTC wallets. + Withdraw excess funds to our XMR wallets. """ totals_all = self.tx.get_total() if totals_all is False: @@ -742,9 +745,11 @@ class Agora(object): # Get the wallet balances in USD total_usd = totals_all[0][1] - + total_trades_usd = self.tx.get_open_trades_usd() + if not total_usd: + return False + total_usd += total_trades_usd profit_usd = total_usd - float(settings.Money.BaseUSD) - # Get the XMR -> USD exchange rate xmr_usd = self.cg.get_price(ids="monero", vs_currencies=["USD"]) diff --git a/handler/commands.py b/handler/commands.py index 5fbe266..de7d9f9 100644 --- a/handler/commands.py +++ b/handler/commands.py @@ -29,7 +29,7 @@ class IRCCommands(object): class create(object): name = "create" authed = True - helptext = "Create an ad. Usage: create " + helptext = "Create an ad. Usage: create []" @staticmethod def run(cmd, spl, length, authed, msg, agora, revolut, tx, notify): @@ -45,6 +45,18 @@ class IRCCommands(object): msg(f"{posted['response']['data']['message']}: {posted['response']['data']['ad_id']}") else: msg(dumps(posted["response"])) + elif length == 5: + if spl[1] not in loads(settings.Agora.AssetList): + msg(f"Not a valid asset: {spl[1]}") + return + if spl[4] not in loads(settings.Agora.ProviderList): + msg(f"Not a valid provider: {spl[4]}") + return + posted = agora.create_ad(spl[1], spl[2], spl[3], spl[4]) + if posted["success"]: + msg(f"{posted['response']['data']['message']}: {posted['response']['data']['ad_id']}") + else: + msg(dumps(posted["response"])) class messages(object): name = "messages" @@ -331,7 +343,10 @@ class IRCCommands(object): msg(f"Not a valid asset: {spl[1]}") return currency = spl[2] - rtrn = agora.get_all_public_ads([asset], [currency]) + rtrn = agora.get_all_public_ads(assets=[asset], currencies=[currency]) + if not rtrn: + msg("No results.") + return for ad in rtrn[currency]: msg(f"({ad[0]}) {ad[1]} {ad[2]} {ad[3]} {ad[4]} {ad[5]} {ad[6]}") elif length == 4: @@ -341,7 +356,10 @@ class IRCCommands(object): return providers = spl[3].split(",") currency = spl[2] - rtrn = agora.get_all_public_ads([asset], [currency], providers) + rtrn = agora.get_all_public_ads(assets=[asset], currencies=[currency], providers=providers) + if not rtrn: + msg("No results.") + return for ad in rtrn[currency]: msg(f"({ad[0]}) {ad[1]} {ad[2]} {ad[3]} {ad[4]} {ad[5]} {ad[6]}")