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
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
def get_xp_leaderboard_users(guild: Guild) -> List[User]: return User.select().where(User.guild_id == guild.id).order_by( User.xp.desc())