async def test_recalculate_leader_returns_new_highest_points_user( target_user: User, old_point_leader: User, guild: Guild): target_user.points = OLD_POINT_LEADER_POINTS + 1 target_user.save() new_leader = await recalculate_leader(guild) assert new_leader == target_user
def add_xp(user: User, amount: int, cooldown=timedelta(minutes=5)) -> User: if user.xp_last_update_time + cooldown > datetime.now(): return user LOG.info(f"Adding {amount} xp for user {user.name}") user.xp += amount user.xp_last_update_time = datetime.now() user.save() return user
async def test_recalculate_leader_reassigns_roles( target_user: User, old_point_leader: User, leader_role: PointLeaderRole): target_user.points = OLD_POINT_LEADER_POINTS + 1 target_user.save() discord_role = MagicMock() old_leader_member = AsyncMock(roles=[discord_role], spec=Member) new_leader_member = AsyncMock(roles=[], spec=Member) guild = AsyncMock(id=GUILD_ID, spec=Guild) guild.get_member.return_value = new_leader_member guild.members = [new_leader_member, old_leader_member] guild.get_role.return_value = discord_role await recalculate_leader(guild) new_leader_member.add_roles.assert_called_with(discord_role) old_leader_member.remove_roles.assert_called_with(discord_role)
def add_points(command_user: User, target_user: User, points: int) -> User: LOG.info(f"Giving {target_user.name} {points}") log_points_change(command_user, target_user, points) target_user.points += points target_user.save() return target_user