Ejemplo n.º 1
0
def test_get_or_create_user_user_creates_user(discord_user: DiscordUser,
                                              guild: Guild):
    created_user = get_or_create_user(discord_user, guild)

    assert User.select().count() == 1
    assert created_user.discord_id == discord_user.id
    assert created_user.guild_id == guild.id
    assert created_user.name == discord_user.name
    assert created_user.points == NO_POINTS
Ejemplo n.º 2
0
async def recalculate_leader(guild: Guild) -> User:
    new_leader: User = User.select().where(User.guild_id == guild.id).order_by(
        User.points.desc()).get()

    role: Optional[PointLeaderRole] = PointLeaderRole.get_or_none(
        PointLeaderRole.guild_id == guild.id)
    if not role:
        return new_leader

    discord_role: Optional[DiscordRole] = guild.get_role(role.role_id)
    if not discord_role:
        LOG.info(f"Point leader role no longer exists in guild {guild.name}")
        role.delete_instance()
        return new_leader

    for member in guild.members:
        if discord_role in member.roles:
            await member.remove_roles(discord_role)

    new_leader_discord_member: Member = guild.get_member(new_leader.discord_id)
    await new_leader_discord_member.add_roles(discord_role)

    return new_leader
Ejemplo n.º 3
0
def get_xp_leaderboard_users(guild: Guild) -> List[User]:
    return User.select().where(User.guild_id == guild.id).order_by(
        User.xp.desc())