To tackle this problem, my strongest recommendation is to use an if-else
statement, where you check if the ctx.author.id
is the same as a set id that you provide. Do have a look at the code snippet below, along with an image of a working example.
@commands.command()
async def ship(self, ctx):
if ctx.author.id == 000000: # replace this with the user's id
# code runs if these two ids are equal to each other
# do something here
# if you want to use multiple users, use an elif statement
elif ctx.author.id == 0000: # replace this with another user's id
# do something here
else: # 'else' if the author is none of these ids
# do something else

Other Links:
Edit (answering question in comments)
To my knowledge, a good way to get a random user that isn't the author is by using a while True
loop. With every iteration, the bot would check if the randomly chosen user is the author, and if it is not, the bot will break the loop and send the user. Otherwise, it would continue looping until the user is not equal to the author. Do view the code snippet below.
while True:
user = random.choice(ctx.guild.members)
if user == ctx.author:
continue # Restarts the loop
break # Ends the loop
await ctx.send(user)
