Skip to content

Commit

Permalink
Get current top_points and if the current amount It's greater than to…
Browse files Browse the repository at this point in the history
…p_points, bet top_poins -= random.uniform(1, 5) - stealth_mode #33
  • Loading branch information
Tkd-Alex committed Feb 1, 2021
1 parent 1dee172 commit 5035232
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
31 changes: 24 additions & 7 deletions TwitchChannelPointsMiner/classes/entities/Bet.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import copy
import logging
from enum import Enum, auto
from random import uniform

from millify import millify

from TwitchChannelPointsMiner.utils import float_round
from TwitchChannelPointsMiner.utils import char_decision_as_index, float_round

logger = logging.getLogger(__name__)

Expand All @@ -23,6 +24,7 @@ def __init__(
percentage: int = None,
percentage_gap: int = None,
max_points: int = None,
stealth_mode: bool = None,
):
self.strategy = strategy
self.percentage = percentage
Expand All @@ -34,9 +36,10 @@ def default(self):
self.percentage = self.percentage if not None else 5
self.percentage_gap = self.percentage_gap if not None else 2
self.max_points = self.max_points if not None else 50000
self.stealth_mode = self.stealth_mode if not None else False

def __repr__(self):
return f"BetSettings(Strategy={self.strategy}, Percentage={self.percentage}, PercentageGap={self.percentage_gap}, MaxPoints={self.max_points})"
return f"BetSettings(Strategy={self.strategy}, Percentage={self.percentage}, PercentageGap={self.percentage_gap}, MaxPoints={self.max_points}, StealthMode={self.stealth_mode})"


class Bet:
Expand All @@ -54,6 +57,15 @@ def update_outcomes(self, outcomes):
self.outcomes[0]["total_points"] = int(outcomes[0]["total_points"])
self.outcomes[1]["total_points"] = int(outcomes[1]["total_points"])

outcomes[0]["top_predictors"] = sorted(
outcomes[0]["top_predictors"], key=lambda x: x["points"], reverse=True
)
outcomes[1]["top_predictors"] = sorted(
outcomes[1]["top_predictors"], key=lambda x: x["points"], reverse=True
)
self.outcomes[0]["top_points"] = outcomes[0]["top_predictors"]["points"]
self.outcomes[1]["top_points"] = outcomes[1]["top_predictors"]["points"]

self.total_users = (
self.outcomes[0]["total_users"] + self.outcomes[1]["total_users"]
)
Expand Down Expand Up @@ -128,13 +140,18 @@ def calculate(self, balance: int) -> dict:
)

if self.decision["choice"] is not None:
self.decision["id"] = (
self.outcomes[0]["id"]
if self.decision["choice"] == "A"
else self.outcomes[1]["id"]
)
index = char_decision_as_index(self.decision["choice"])
self.decision["id"] = self.outcomes[index]["id"]
self.decision["amount"] = min(
int(balance * (self.settings.percentage / 100)),
self.settings.max_points,
)
if (
self.settings.stealth_mode is True
and self.decision["amount"] >= self.outcomes[index]["top_points"]
):
reduce_amount = uniform(1, 5)
self.decision["amount"] = (
self.outcomes[index]["top_points"] - reduce_amount
)
return self.decision
4 changes: 4 additions & 0 deletions TwitchChannelPointsMiner/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,7 @@ def set_default_settings(settings, defaults):
# Get the default values from Settings.streamer_settings
settings = copy_values_if_none(settings, defaults)
return settings


def char_decision_as_index(char):
return 0 if char == "A" else 1

0 comments on commit 5035232

Please sign in to comment.