fix (renting): Disallow removing owner.

Don't allow the room owner to be added or removed from the rented room.
Also fixes an issue where the room expiry log would try to use deleted data.
This commit is contained in:
2021-12-22 08:34:38 +02:00
parent 8208f601d6
commit d2fd3c9c0d
2 changed files with 9 additions and 5 deletions

View File

@@ -54,9 +54,13 @@ async def cmd_rent(ctx):
# Extract members to remove # Extract members to remove
current_memberids = set(room.memberids) current_memberids = set(room.memberids)
if ctx.author in ctx.msg.mentions:
return await ctx.error_reply(
"You can't remove yourself from your own room!"
)
to_remove = ( to_remove = (
member for member in ctx.msg.mentions member for member in ctx.msg.mentions
if member.id in current_memberids if member.id in current_memberids and member.id != ctx.author.id
) )
to_remove = list(set(to_remove)) # Remove duplicates to_remove = list(set(to_remove)) # Remove duplicates
@@ -86,7 +90,7 @@ async def cmd_rent(ctx):
current_memberids = set(room.memberids) current_memberids = set(room.memberids)
to_add = ( to_add = (
member for member in ctx.msg.mentions member for member in ctx.msg.mentions
if member.id not in current_memberids and member.id != ctx.author if member.id not in current_memberids and member.id != ctx.author.id
) )
to_add = list(set(to_add)) # Remove duplicates to_add = list(set(to_add)) # Remove duplicates

View File

@@ -187,14 +187,14 @@ class Room:
except discord.HTTPException: except discord.HTTPException:
pass pass
# Delete the room from data (cascades to member deletion)
self.delete()
guild_settings.event_log.log( guild_settings.event_log.log(
title="Private study room expired!", title="Private study room expired!",
description="<@{}>'s private study room expired.".format(self.data.ownerid) description="<@{}>'s private study room expired.".format(self.data.ownerid)
) )
# Delete the room from data (cascades to member deletion)
self.delete()
async def add_members(self, *members): async def add_members(self, *members):
guild_settings = GuildSettings(self.data.guildid) guild_settings = GuildSettings(self.data.guildid)