diff --git a/jarvis/cogs/rolegiver.py b/jarvis/cogs/rolegiver.py index cac4764..8b87241 100644 --- a/jarvis/cogs/rolegiver.py +++ b/jarvis/cogs/rolegiver.py @@ -69,10 +69,7 @@ class RolegiverCog(Scale): ) embed.set_thumbnail(url=ctx.guild.icon.url) - embed.set_author( - name=ctx.author.display_name, - icon_url=ctx.author.display_avatar, - ) + embed.set_author(name=ctx.author.display_name, icon_url=ctx.author.display_avatar.url) embed.set_footer(text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}") @@ -106,17 +103,21 @@ class RolegiverCog(Scale): message = await ctx.send(content="\u200b", components=components) try: context = await self.bot.wait_for_component( - self.bot, - check=lambda x: ctx.author.id == x.author.id, + check=lambda x: ctx.author.id == x.context.author.id, messages=message, timeout=60 * 1, ) + removed_roles = [] for to_delete in context.context.values: + role = await ctx.guild.get_role(to_delete) + if role: + removed_roles.append(role) setting.roles.remove(int(to_delete)) setting.save() + for row in components: - for component in row["components"]: - component["disabled"] = True + for component in row.components: + component.disabled = True roles = [] for role_id in setting.roles: @@ -129,8 +130,9 @@ class RolegiverCog(Scale): roles.sort(key=lambda x: -x.position) value = "\n".join([r.mention for r in roles]) if roles else "None" + rvalue = "\n".join([r.mention for r in removed_roles]) if removed_roles else "None" fields = [ - EmbedField(name="Removed Role", value=f"{role.mention}"), + EmbedField(name="Removed Role(s)", value=rvalue), EmbedField(name="Remaining Role(s)", value=value), ] @@ -141,24 +143,21 @@ class RolegiverCog(Scale): ) embed.set_thumbnail(url=ctx.guild.icon.url) - embed.set_author( - name=ctx.author.display_name, - icon_url=ctx.author.display_avatar, - ) + embed.set_author(name=ctx.author.display_name, icon_url=ctx.author.display_avatar.url) embed.set_footer( text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}" ) await context.context.edit_origin( - content=f"Removed {len(context.selected_options)} role(s)", + content=f"Removed {len(context.context.values)} role(s)", embed=embed, components=components, ) except asyncio.TimeoutError: for row in components: - for component in row["components"]: - component["disabled"] = True + for component in row.components: + component.disabled = True await message.edit(components=components) @slash_command(name="rolegiver", sub_cmd_name="list", description="List rolegiver roles") @@ -188,8 +187,8 @@ class RolegiverCog(Scale): embed.set_thumbnail(url=ctx.guild.icon.url) embed.set_author( - name=ctx.author.nick if ctx.author.nick else ctx.author.username, - icon_url=ctx.author.display_avatar, + name=ctx.author.display_name, + icon_url=ctx.author.display_avatar.url, ) embed.set_footer(text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}") @@ -212,8 +211,7 @@ class RolegiverCog(Scale): select = Select( options=options, - custom_id="to_delete", - placeholder="Select roles to remove", + placeholder="Select roles to add", min_values=1, max_values=len(options), ) @@ -223,7 +221,7 @@ class RolegiverCog(Scale): try: context = await self.bot.wait_for_component( - check=lambda x: ctx.author.id == x.author_id, + check=lambda x: ctx.author.id == x.context.author.id, messages=message, timeout=60 * 5, ) @@ -248,14 +246,14 @@ class RolegiverCog(Scale): embed = build_embed( title="User Given Role", - description=f"{role.mention} given to {ctx.author.mention}", + description=f"{len(added_roles)} role(s) given to {ctx.author.mention}", fields=fields, ) embed.set_thumbnail(url=ctx.guild.icon.url) embed.set_author( name=ctx.author.display_name, - icon_url=ctx.author.display_avatar, + icon_url=ctx.author.display_avatar.url, ) embed.set_footer( @@ -263,14 +261,14 @@ class RolegiverCog(Scale): ) for row in components: - for component in row["components"]: - component["disabled"] = True + for component in row.components: + component.disabled = True await context.context.edit_origin(embed=embed, content="\u200b", components=components) except asyncio.TimeoutError: for row in components: - for component in row["components"]: - component["disabled"] = True + for component in row.components: + component.disabled = True await message.edit(components=components) @slash_command(name="role", sub_cmd_name="remove", sub_cmd_description="Remove a role") @@ -305,7 +303,7 @@ class RolegiverCog(Scale): try: context = await self.bot.wait_for_component( - check=lambda x: ctx.author.id == x.author_id, + check=lambda x: ctx.author.id == x.context.author.id, messages=message, timeout=60 * 5, ) @@ -329,30 +327,27 @@ class RolegiverCog(Scale): embed = build_embed( title="User Forfeited Role", - description=f"{role.mention} taken from {ctx.author.mention}", + description=f"{len(removed_roles)} role(s) removed from {ctx.author.mention}", fields=fields, ) embed.set_thumbnail(url=ctx.guild.icon.url) - embed.set_author( - name=ctx.author.display_name, - icon_url=ctx.author.display_avatar, - ) + embed.set_author(name=ctx.author.display_name, icon_url=ctx.author.display_avatar.url) embed.set_footer( text=f"{ctx.author.username}#{ctx.author.discriminator} | {ctx.author.id}" ) for row in components: - for component in row["components"]: - component["disabled"] = True + for component in row.components: + component.disabled = True await context.context.edit_origin(embed=embed, components=components, content="\u200b") except asyncio.TimeoutError: for row in components: - for component in row["components"]: - component["disabled"] = True + for component in row.components: + component.disabled = True await message.edit(components=components) @slash_command(