def get_war_league_from_war(war, clan_tag):
    """ Figure out which war league a clan was in during a given war. """
    standing = war['standings']

    clan_score = 0
    for clan in standing:
        if clan['clan']['tag'] == clan_tag:
            clan_score = clan['clan']['clanScore']

    return leagueinfo.get_war_league_from_score(clan_score)
def process_clan(config, clan, current_war):
    clan_processed = clan.copy()

    # remove memberlist from clan, as we're separating that out
    del clan_processed['memberList']

    # figure out clan war league from clan score
    league = leagueinfo.get_war_league_from_score(clan['clanWarTrophies'])

    clan_processed['warLeague'] = league
    clan_processed['warLeagueName'] = config['strings']['war-league-' + league]
    clan_processed['currentWarState'] = current_war['state']

    return clan_processed
    def get_war_readiness_for_member(self, member_tag, war_trophies):

        logger.debug("Getting card for player {}".format(member_tag))
        try:
            # Get clan data and war log from API.
            player = self.players.get_player(member_tag)

            war_league = leagueinfo.get_war_league_from_score(war_trophies)

            war_readiness_delta_target = {
                'legendary': 1,
                'gold': 2,
                'silver': 3,
                'bronze': 4
            }[war_league]

            ready_count = 0
            for card in player.cards:
                delta = card.max_level - card.level
                if delta <= war_readiness_delta_target:
                    ready_count += 1

            return (ready_count / len(player.cards)) * 100
        except pyroyale.ApiException as e:
            if e.body:
                body = json.loads(e.body)
                if body['reason'] == 'accessDenied':
                    logger.error(
                        'developer.clashroyale.com claims that your API key is invalid. Please make sure you are setting up crtools with a valid key.'
                    )
                elif body['reason'] == 'accessDenied.invalidIp':
                    logger.error('developer.clashroyale.com says: {}'.format(
                        body['message']))
                else:
                    logger.error('error: {}'.format(body))
            else:
                logger.error('error: {}'.format(e))
        except pyroyale.OpenApiException as e:
            logger.error('error: {}'.format(e))

        return False
Esempio n. 4
0
    def __init__(self, clan, current_war, config):
        self.tag = clan.tag
        self.name = clan.name
        self.badge_id = clan.badge_id
        self.type = clan.type
        self.clan_score = clan.clan_score
        self.required_trophies = clan.required_trophies
        self.donations_per_week = clan.donations_per_week
        self.clan_war_trophies = clan.clan_war_trophies
        self.clan_chest_level = clan.clan_chest_level
        self.clan_chest_max_level = clan.clan_chest_max_level
        self.members = clan.members
        self.location = clan.location
        self.description = clan.description
        self.clan_chest_status = clan.clan_chest_status
        self.clan_chest_points = clan.clan_chest_points

        self.war_league = leagueinfo.get_war_league_from_score(
            self.clan_war_trophies)
        self.war_league_name = config['strings']['war-league-' +
                                                 self.war_league]
        self.current_war_state = current_war.state
Esempio n. 5
0
def test_get_war_league_from_score():
    assert leagueinfo.get_war_league_from_score(200) == 'bronze'
    assert leagueinfo.get_war_league_from_score(1501) == 'gold'
    assert leagueinfo.get_war_league_from_score(99999999999999) == 'legendary'