Before place the bet check if in 1s of timeout the bet div is visibile, in case of tiemout exception attempt do a bet chains for open again the div and make the input fillable. #6
This commit is contained in:
@@ -13,13 +13,12 @@ class EmojiFormatter(logging.Formatter):
|
||||
logging.Formatter.__init__(self, fmt=fmt, datefmt=datefmt)
|
||||
|
||||
def format(self, record):
|
||||
if hasattr(record, "emoji") and self.print_emoji is True:
|
||||
# Check also if the message have already the emoji
|
||||
if hasattr(record, "emoji_is_present") is False or record.emoji_is_present is False:
|
||||
record.msg = emoji.emojize(
|
||||
f"{record.emoji} {record.msg.strip()}", use_aliases=True
|
||||
)
|
||||
record.emoji_is_present = True
|
||||
record.emoji_is_present = record.emoji_is_present if hasattr(record, "emoji_is_present") else False
|
||||
if hasattr(record, "emoji") and self.print_emoji is True and record.emoji_is_present is False:
|
||||
record.msg = emoji.emojize(
|
||||
f"{record.emoji} {record.msg.strip()}", use_aliases=True
|
||||
)
|
||||
record.emoji_is_present = True
|
||||
return super().format(record)
|
||||
|
||||
|
||||
@@ -65,7 +64,7 @@ def configure_loggers(username, settings):
|
||||
print_emoji=settings.emoji,
|
||||
)
|
||||
)
|
||||
# file_handler.setLevel(settings.level)
|
||||
# file_handler.setLevel(settings.level) # Use the same level as Root logger
|
||||
root_logger.addHandler(file_handler)
|
||||
return logs_file
|
||||
return None
|
||||
|
||||
@@ -14,6 +14,7 @@ from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
from selenium.common.exceptions import TimeoutException
|
||||
|
||||
from TwitchChannelPointsMiner.classes.EventPrediction import EventPrediction
|
||||
|
||||
@@ -315,15 +316,20 @@ class TwitchBrowser:
|
||||
)
|
||||
self.browser.get(event.streamer.chat_url)
|
||||
time.sleep(random.uniform(3, 5))
|
||||
if self.__open_coins_menu(event) is True:
|
||||
if self.__click_on_bet(event) is True:
|
||||
if self.__enable_custom_bet_value(event) is True:
|
||||
return self.currently_is_betting
|
||||
if self.__bet_chains_methods(event) is True:
|
||||
return self.currently_is_betting
|
||||
logger.error(
|
||||
f"Attempt {attempt+1} failed!", extra={"emoji": ":wrench:"}
|
||||
)
|
||||
return False
|
||||
|
||||
def __bet_chains_methods(self, event):
|
||||
if self.__open_coins_menu(event) is True:
|
||||
if self.__click_on_bet(event) is True:
|
||||
if self.__enable_custom_bet_value(event) is True:
|
||||
return True
|
||||
return False
|
||||
|
||||
def place_bet(self, event: EventPrediction):
|
||||
logger.info(
|
||||
f"Going to complete bet for event {event}. Current url page: {self.browser.current_url}",
|
||||
@@ -331,6 +337,22 @@ class TwitchBrowser:
|
||||
)
|
||||
if event.status == "ACTIVE":
|
||||
if event.box_fillable and self.currently_is_betting:
|
||||
|
||||
try:
|
||||
WebDriverWait(self.browser, 1).until(
|
||||
expected_conditions.visibility_of_element_located((By.XPATH, streamBetMainDiv))
|
||||
)
|
||||
except TimeoutException:
|
||||
logger.info(
|
||||
"The bet div was not found, maybe It was closed. Attempt to open again, hope to be in time",
|
||||
extra={"emoji": ":wrench:"},
|
||||
)
|
||||
if self.__bet_chains_methods(event) is True:
|
||||
logger.info(
|
||||
"Success! Bet div is now open, we can complete the bet",
|
||||
extra={"emoji": ":wrench:"}
|
||||
)
|
||||
|
||||
decision = event.bet.calculate(event.streamer.channel_points)
|
||||
if decision["choice"]:
|
||||
selector_index = 1 if decision["choice"] == "A" else 2
|
||||
|
||||
Reference in New Issue
Block a user