|
@@ -1,10 +1,11 @@
|
|
|
-"""Sell bot"""
|
|
|
+"""Market bot module"""
|
|
|
|
|
|
+from datetime import datetime, timedelta
|
|
|
|
|
|
-from rival_regions_wrapper import util
|
|
|
from rival_regions_wrapper.wrapper import Storage
|
|
|
|
|
|
-from rival_regions_marketbot import RR_WRAPPER, PROFILE_ID, wrapper
|
|
|
+from rival_regions_marketbot import RR_WRAPPER, PROFILE_ID, SCHEDULER, wrapper
|
|
|
+
|
|
|
|
|
|
MARKET_MAX = {
|
|
|
"helium-3": 153600,
|
|
@@ -28,31 +29,67 @@ MARKET_MAX = {
|
|
|
}
|
|
|
|
|
|
|
|
|
-def sell(item, minimum_price):
|
|
|
- if minimum_price >= 500000000:
|
|
|
- return
|
|
|
+class MarketBot:
|
|
|
+ """Market bot class"""
|
|
|
+
|
|
|
+ item = None
|
|
|
+ minimum_sell_price = None
|
|
|
+ maximum_buy_price = None
|
|
|
+
|
|
|
+ def __init__(self, item, minimum_sell_price, maximum_buy_price):
|
|
|
+ self.item = item
|
|
|
+ self.miniumum_sell_price = minimum_sell_price
|
|
|
+ self.maximum_buy_price = maximum_buy_price
|
|
|
+
|
|
|
+ def start_jobs(self):
|
|
|
+ """Start jobs"""
|
|
|
+ SCHEDULER.add_job(
|
|
|
+ buy,
|
|
|
+ "date",
|
|
|
+ run_date=datetime.now() + timedelta(minutes=5),
|
|
|
+ id="buy_{}".format(self.item),
|
|
|
+ args=[self.item, self.minimum_sell_price],
|
|
|
+ )
|
|
|
+ SCHEDULER.add_job(
|
|
|
+ sell,
|
|
|
+ "date",
|
|
|
+ run_date=datetime.now() + timedelta(minutes=5),
|
|
|
+ id="sell_{}".format(self.item),
|
|
|
+ args=[self.item, self.minimum_sell_price],
|
|
|
+ )
|
|
|
+
|
|
|
+def sell(item, minimum_sell_price):
|
|
|
+ """Market bot sell method"""
|
|
|
market = wrapper.Market(RR_WRAPPER)
|
|
|
first_offer = market.first_offer(item)
|
|
|
if first_offer["profile_id"] != PROFILE_ID:
|
|
|
# op_markt = market.offer_by(item, PROFILE_ID)
|
|
|
# totaal = Storage(RR_WRAPPER).info()[item]
|
|
|
# totaal = opslag + op_markt
|
|
|
- totaal = min(Storage(RR_WRAPPER).info()[item], MARKET_MAX[item])
|
|
|
- price = max(minimum_price, (first_offer["price"] * 100 - 10) / 100)
|
|
|
+ totaal = min(
|
|
|
+ Storage(RR_WRAPPER).info()[item], MARKET_MAX[item]
|
|
|
+ )
|
|
|
+ price = max(
|
|
|
+ minimum_sell_price,
|
|
|
+ (first_offer["price"] * 100 - 10) / 100,
|
|
|
+ )
|
|
|
# if totaal == op_markt and own_price == minimum_price:
|
|
|
if totaal != 0:
|
|
|
- item = util.ITEM_KEYS[item]
|
|
|
- RR_WRAPPER.post("storage/sell/{}".format(item))
|
|
|
- RR_WRAPPER.post(
|
|
|
- "storage/newsell/{}/{}/{}".format(item, totaal, price)
|
|
|
+ market.sell(
|
|
|
+ {
|
|
|
+ "item": item,
|
|
|
+ "amount": totaal,
|
|
|
+ "price": price,
|
|
|
+ }
|
|
|
)
|
|
|
|
|
|
-
|
|
|
-def buy(item, maximum_price):
|
|
|
- """Buy item based on maximum price"""
|
|
|
- if maximum_price <= 1:
|
|
|
- return
|
|
|
+def buy(item, maximum_buy_price):
|
|
|
+ """Market bot buy method"""
|
|
|
market = wrapper.Market(RR_WRAPPER)
|
|
|
offer = market.first_offer(item)
|
|
|
- if offer["price"] <= maximum_price:
|
|
|
+ if offer["price"] <= maximum_buy_price:
|
|
|
market.buy(offer)
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ sell.__module__ = "marketbot"
|
|
|
+ buy.__module__ = "marketbot"
|