def check_is_call_valid(screen_area, hand_value, element, stack_collection, db): try: cur_stack = current_stack.search_current_stack(screen_area, stack_collection, db) bank_size = current_stack.search_bank_stack(screen_area, db) call_size = image_processing.search_last_opponent_action( screen_area, db) if not isinstance(call_size, str): call_size = call_size['alias'] else: call_size = current_stack.search_allin_stack(screen_area, db) if call_size == '0.5': call_size = float(call_size) elif call_size == 'check': call_size = 0.1 else: call_size = int(call_size) current_pot_odds = round(bank_size / call_size, 1) if cur_stack <= call_size: element = 'river' necessary_pot_odds = db_query.get_pot_odds(hand_value, element, db) if int(current_pot_odds) >= int(necessary_pot_odds): return True else: return False except Exception as e: error_log.error_log('check_is_call_valid', str(e))
def check_is_action_buttons(screen_area, stack_collection, db): current_stack.get_actual_game_data(screen_area, stack_collection, db) row = session_log.get_last_row_from_log_session(screen_area, db) try: reaction_to_opponent = get_reaction_to_opponent(row, db) if not isinstance(reaction_to_opponent, str): reaction_to_opponent = 'fold' except: reaction_to_opponent = 'fold' last_opponnet_action = image_processing.search_last_opponent_action(screen_area, db) if not isinstance(last_opponnet_action, str): hand = row[0]['hand'] hand = hand_converting(hand) bb_count = last_opponnet_action['alias'] if reaction_to_opponent == 'fold' and bb_count in ('1', '2') and \ int(row[0]['current_stack']) >= 17 and hand in available_hand_to_call_min3bet(): reaction_to_opponent = 'call' if reaction_to_opponent == 'push': keyboard.press('q') elif reaction_to_opponent == 'call': keyboard.press('c') else: keyboard.press('f') session_log.update_action_log_session(reaction_to_opponent, str(screen_area), db) return True
def get_opponent_flop_reaction(screen_area, stack_collection, db): hand_value = session_log.get_hand_value(screen_area, db) combination_value = db_query.get_combination_value('flop', hand_value, db) stack = session_log.get_last_row_from_log_session(screen_area, db)[0][1] if hand_value is None: return False opponent_reaction = image_processing.search_last_opponent_action( screen_area, db) if not isinstance(opponent_reaction, str): opponent_reaction = opponent_reaction['alias'] if opponent_reaction in ('1', '2', '3') and combination_value in ('draw', 'other', 'composite') \ and int(stack) <= 13 and current_stack.search_current_stack(screen_area, stack_collection, db) <= 13: keyboard.press('q') session_log.update_action_log_session('push', str(screen_area), db) elif combination_value == 'draw' and pot_odds.check_is_call_valid( screen_area, hand_value, 'turn', stack_collection, db): keyboard.press('c') session_log.update_action_log_session('cc_postflop', str(screen_area), db) elif opponent_reaction in ('1', '2') and hand_value not in ( 'trash', 'gutshot', 'bottom_pair', 'over_cards') and combination_value != 'draw': keyboard.press('c') session_log.update_action_log_session('cc_postflop', str(screen_area), db) elif opponent_reaction == 'check': keyboard.press('h') session_log.update_action_log_session('cc_postflop', str(screen_area), db) else: keyboard.press('f') session_log.update_action_log_session('fold', str(screen_area), db) return True
def check_is_call_after_opponent_river_agression(screen_area, hand_value, stack_collection, action, db): try: cur_stack = current_stack.search_current_stack(screen_area, stack_collection, db) bank_size = current_stack.search_bank_stack(screen_area, db) call_size = image_processing.search_last_opponent_action( screen_area, db) if not isinstance(call_size, str): call_size = call_size['alias'] else: call_size = 5 if call_size == '0.5': call_size = float(call_size) elif call_size == 'check': call_size = 0 else: call_size = int(call_size) if action == 'river_cbet' and cur_stack > bank_size and call_size not in ('0.5', '1', '2', '3', '4') \ and hand_value in ('low_two_pairs', 'two_pairs', 'top_pair', 'low_top_pair'): print(hand_value) return False elif action == 'river_cbet' and cur_stack > bank_size and call_size in ('0.5', '1', '2', '3', '4') \ and hand_value in ('low_two_pairs', 'two_pairs', 'top_pair', 'low_top_pair'): return True else: return None except Exception as e: error_log.error_log('check_is_call_after_opponent_river_agression', str(e))
def make_river_decision(screen_area, hand, stack, action, stack_collection, db): opponent_reaction = image_processing.search_last_opponent_action(screen_area, db) hand_value = flop.get_hand_value(hand, screen_area, db) combination_value = db_query.get_combination_value('river', hand_value, db) if not isinstance(opponent_reaction, str): opponent_reaction = opponent_reaction['alias'] if river_action(screen_area, hand_value, combination_value, stack, action, opponent_reaction, hand, stack_collection, db): return True
def check_is_raise_cbet(screen_area, stack_collection, db): hand_value = session_log.get_hand_value(screen_area, db) combination_value = db_query.get_combination_value('flop', hand_value, db) opponent_reaction = image_processing.search_last_opponent_action(screen_area, db) stack = session_log.get_last_row_from_log_session(screen_area, db)[0]['current_stack'] if not isinstance(opponent_reaction, str): opponent_reaction = opponent_reaction['alias'] if raise_cbet_action(screen_area, hand_value, combination_value, opponent_reaction, stack, stack_collection, db): return True
def check_is_raise_river_value_bet(screen_area, db): opponent_reaction = image_processing.search_last_opponent_action(screen_area, db) if opponent_reaction in ('1', '2'): keyboard.press('c') session_log.update_action_log_session('end', str(screen_area), db) else: keyboard.press('f') session_log.update_action_log_session('fold', str(screen_area), db) return True
def check_conditions_before_insert(hand, screen_area, stack_collection, image_name, folder_name, db): try: position = str(determine_position.seacrh_blind_chips(screen_area, image_name, folder_name, db)) opponent_data = current_stack.processing_opponent_data(screen_area, stack_collection, db) is_headsup = opponent_data[0] stack = opponent_data[1] if position == 'button': is_headsup = 0 stack = current_stack.convert_stack(stack) if position == 'big_blind' or (position == 'small_blind' and is_headsup == 0): last_opponent_action = image_processing.search_last_opponent_action(screen_area, db) last_opponent_action = get_last_opponent_action(position, last_opponent_action) else: last_opponent_action = None session_log.insert_into_log_session(screen_area, hand, db, position, str(stack), is_headsup=is_headsup, last_opponent_action=last_opponent_action) except Exception as e: error_log.error_log('checkConditionsBeforeInsert', str(e)) print(e)
def make_flop_decision(screen_area, hand, image_name, folder_name, stack, action, is_headsup, flop_deck, stack_collection, db): try: save_flop_image(screen_area, image_name, folder_name, db) flop_area = db_query.get_flop_area(screen_area, db) flop_card = image_processing.search_cards(str(flop_area), flop_deck, 6, db) hand = hand + flop_card opponent_reaction = image_processing.search_last_opponent_action( screen_area, db) if not isinstance(opponent_reaction, str): opponent_reaction = opponent_reaction['alias'] session_log.update_hand_after_flop(str(screen_area), hand, db) hand_value = get_hand_value(hand, screen_area, db) combination_value = db_query.get_combination_value( 'flop', hand_value, db) flop_action(screen_area, action, hand_value, combination_value, stack, is_headsup, opponent_reaction, stack_collection, db) except Exception as e: error_log.error_log('makeFlopDecision' + action, str(e)) print(e)