1
votes

How would i make a reaction role event. This is my code i tried with

@client.event
async def on_raw_reaction_add(payload):
    msgID = 05793080854315018
    if payload != None:
        if payload.message_id == msgID:
            if str(payload.emoji) == "✍️":
                await add_roles("cool")

What i wanna do is have my bot checking for reactions on a specific message and then give the user a role if they reacted with the right emoji.

1

1 Answers

3
votes

Assuming that you are using discord.py 1.3.3 you can update your code with the following to add a role based on a specific emoji.

You need to add references to the guild in order to reference the role you wish to add. You will also need to compare the emoji to a string representation of payload.emoji. It might be worth considering using emoji.demojize.

Try:

@client.event
async def on_raw_reaction_add(payload=None):
    msgID = <your message id: int>
    guild = discord.utils.get(client.guilds, name=<your guild name>)
    role = discord.utils.get(guild.roles, name='cool')
    if payload is not None:
        if payload.message_id == msgID:
            if str(payload.emoji) == "✍️":
                await payload.member.add_roles(role)