Source code for asyncpixel.utils

"""Utils."""
import re
from typing import Optional
from typing import Union

ranks = {
    "NONE": None,
    "VIP": "VIP",
    "VIP_PLUS": "VIP+",
    "MVP": "MVP",
    "MVP_PLUS": "MVP+",
    "SUPERSTAR": "MVP++",
    "YOUTUBER": "YOUTUBE",
    "PIG+++": "PIG+++",
    "BUILD TEAM": "BUILD TEAM",
    "HELPER": "HELPER",
    "MODERATOR": "MOD",
    "ADMIN": "ADMIN",
    "SLOTH": "SLOTH",
    "OWNER": "OWNER",
}


[docs]def get_rank( package_rank: Optional[str], rank: Optional[str] = None, prefix_raw: Optional[str] = None, monthly_package_rank: Optional[str] = None, new_package_rank: Optional[str] = None, ) -> Optional[str]: """Get rank of Hypixel player. Args: rank (Optional[str]): rank prefix_raw (Optional[str]): raw prefix monthly_package_rank (Optional[str]): monthly package for mvp++ new_package_rank (Optional[str]): new rank format package_rank (Optional[str]): old rank format Returns: Optional[str]: rank """ real_rank = None if prefix_raw: prefix = re.sub(r"ยง.", "", prefix_raw)[1:-1] # prefixes all start and end with brackets, and have minecraft color codes, # this is to remove color codes and # brackets real_rank = ranks.get(prefix, prefix) elif rank and rank != "NORMAL" and not real_rank: real_rank = ranks.get(rank, rank) elif (monthly_package_rank and monthly_package_rank != "NONE") and not real_rank: real_rank = ranks.get(monthly_package_rank, monthly_package_rank) elif new_package_rank and not real_rank: real_rank = ranks.get(new_package_rank, new_package_rank) elif package_rank and not real_rank: real_rank = ranks.get(package_rank, package_rank) return real_rank
[docs]def calc_player_level(xp: Union[float, int]) -> float: """Calculate player level from xp. Args: xp (int): amount of xp a player has. Returns: float: current level of player. """ return 1 + (-8750.0 + (8750 ** 2 + 5000 * xp) ** 0.5) / 2500