FabianBartl / HARIBOT

A discord bot specialized for the "MINT TANK Community" discord server. Bot invite below:
https://discord.com/oauth2/authorize?client_id=1024235031037759500&permissions=8&scope=bot
MIT License
2 stars 3 forks source link

wrong ranking results #27

Closed FabianBartl closed 1 year ago

FabianBartl commented 1 year ago

Hat meiste XP aber nicht Rang 1?

image
unsorted = { userID: users_data[userID].get(name, 0) for userID in users_data }
def getRankings(member: Member) -> dict[str: int]:
    users_data = dict()
    path = os.path.join(DIR.DATA, "users")
    for filename in os.listdir(path):
        with open(os.path.join(path, filename), "r") as fobj: data = json.load(fobj)
        last_user = filename.split(".")[0]
        users_data[last_user] = data

    with open(os.path.join(DIR.CONFIGS, "badges.json"), "r") as fobj: badges_config = json.load(fobj)

    rankings = dict()
    for badgeID in badges_config:
        name = badges_config[badgeID]["name"]
        unsorted = dict()
        for userID in users_data:
            user_data = users_data[userID]
            unsorted[userID] = user_data.get(name, 0)
            LOG.LOGGER.info(userID)
            LOG.LOGGER.warning(user_data)
        rankings[badgeID] = sortDictByValue(unsorted, True)

    ranking = dict()
    for badgeID in badges_config:
        for rank, pair in enumerate(rankings[badgeID]):
            if pair[0] == str(member.id):
                ranking[badgeID] = rank+1
                break

    return ranking

used in #15

FabianBartl commented 1 year ago

image

def getRankings(member: Member) -> dict[str: int]:
    users_data = dict()
    path = os.path.join(DIR.DATA, "users")
    for filename in os.listdir(path):
        with open(os.path.join(path, filename), "r") as fobj: data = json.load(fobj)
        last_user = filename.split(".")[0]
        users_data[last_user] = data

    with open(os.path.join(DIR.CONFIGS, "badges.json"), "r") as fobj: badges_config = json.load(fobj)

    rankings = dict()
    for badgeID in badges_config:
        name = badges_config[badgeID]["name"]
        unsorted = { userID: users_data[userID].get(name, 0) for userID in users_data }
        rankings[badgeID] = sortDictByValue(unsorted, True)

    ranking = dict()
    for badgeID in badges_config:
        for rank, pair in enumerate(rankings[badgeID]):
            if pair[0] == str(member.id):
                ranking[badgeID] = rank+1
                break

    return ranking