#Assigning role by button from the DM channel

1 messages · Page 1 of 1 (latest)

raven heart
#

I don't understand why this error occurs.
What are the ways to implement the idea, if it can not be done?

class RuleButton(discord.ui.Button):
    def __init__(self, role: discord.Role, guild: discord.Guild, member: discord.Member):
        super().__init__(
            label=role.name,
            style=discord.enums.ButtonStyle.success,
            custom_id=str(role.id),)
        self.guild = guild
        self.member = member

    async def callback(self, interaction: discord.Interaction):
        user = interaction.user
        # role = interaction.guild.get_role(int(self.custom_id))
        role = self.guild.get_role(int(self.custom_id))
        if role is None:
            return

        # if role not in user.roles:
        if role not in self.member.roles:
            await self.member.add_roles(role)

            await interaction.response.send_message(f"🎉 Вы получили роль {role.mention}", ephemeral=True)
        else:
            # await user.remove_roles(role)
            await interaction.response.send_message(
                f"❌ Роль {role.mention} уже выдана вам", ephemeral=True
            )```
The error appears in the line:
```py
await self.member.add_roles(role)

Error:

#
Ignoring exception in view <View timeout=None children=1> for item <RuleButton style=<ButtonStyle.success: 3> url=None disabled=False label='rezident' emoji=None row=None>:
Traceback (most recent call last):
  File "/home/kirill/PycharmProjects/discord-bot-vr-cogs-pycord/venv/lib64/python3.10/site-packages/discord/ui/view.py", line 414, in _scheduled_task
    await item.callback(interaction)
  File "/home/kirill/PycharmProjects/discord-bot-vr-cogs-pycord/cogs/rules.py", line 27, in callback
    await self.member.add_roles(role)
  File "/home/kirill/PycharmProjects/discord-bot-vr-cogs-pycord/venv/lib64/python3.10/site-packages/discord/member.py", line 1006, in add_roles
    await req(guild_id, user_id, role.id, reason=reason)
  File "/home/kirill/PycharmProjects/discord-bot-vr-cogs-pycord/venv/lib64/python3.10/site-packages/discord/http.py", line 353, in request
    raise Forbidden(response, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
#

bot has admin permissions

keen sigil
#

Is the role you are trying to assign above the bot’s role?

#

If that's the case, try moving the role below the bot's role.

raven heart
#

this solved the problem, thank you