SKAI
SKAI

Reputation: 15

The discord bot wont assign a role

I am following Anson the Developers tutorial, (here's a link) and I coded exactly as he did, I got no errors, except a warning Parameter 'payload' value is not used and I have made sure that:

  1. The bot has proper permissions to assign roles
  2. The bot is online
  3. The emojis and the roles have the same names

heres the code for reference:

import discord
client = discord.Client()


@client.event
async def on_message(message):
    if message.author == client.user:
        return


@client.event
async def on_raw_reaction_add(payload):
    message_id = payload.message_id

    if message_id == '756794977148993597':
        guild_id = payload.guild_id
        guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)

        role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
            if member is not None:
                await member.add_roles(role)
                print("done")
            else:
                print("member not found")
        else:
            print("role not found")
 
client.run('REDACTED')
 

I have tried a lot of troubleshooting and any help would be appreciated!

Upvotes: 1

Views: 491

Answers (1)

Abdulaziz
Abdulaziz

Reputation: 3426

You should not use utils.find in your case.

@client.event
async def on_raw_reaction_add(payload):
    if payload.message_id == 756794977148993597:
        guild = client.get_guild(payload.guild_id)
        role = discord.utils.get(guild.roles, name=payload.emoji.name)

        if role is not None:
            member = guild.get_member(payload.user_id)
            if member is not None:
                await member.add_roles(role)
                print("done")
            else:
                print("member not found")
        else:
            print("role not found")

Upvotes: 1

Related Questions