0
votes

I have this auto assign role on reaction code and on_reaction_add is working just fine but the on_reaction_add_remove is giving me an error why?

CODE

@bot.event
async def on_raw_reaction_add(payload):

    msgID = 754487460142121070  
    user = payload.user_id
    member = payload.member

    guild_id = payload.guild_id
    guild = discord.utils.find(lambda g : g.id == guild_id, bot1.guilds)
    role = get(member.guild.roles, name="penis")

    if payload is not None:
        if payload.message_id == msgID:
            if str(payload.emoji) == "<:bbc:639345897922101248>":
                await member.add_roles(role)

@bot.event
async def on_raw_reaction_remove(payload):

    msgID = 754487460142121070  
    user = payload.user_id
    member = payload.member

    guild_id = payload.guild_id
    guild = discord.utils.find(lambda g : g.id == guild_id, member.guilds)
    role = get(member.guild.roles, name="penis")

    if payload is not None:
        if payload.message_id == msgID:
            if str(payload.emoji) == "<:bbc:639345897922101248>":
                await member.add_removes(role)

error raw_reaction_remove

Ignoring exception in on_raw_reaction_remove
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py",

line 312, in _run_event await coro(*args, **kwargs) File "/Users/CIP/Documents/GitHub/billionaireboysclub/lojinha.py", line 150, in on_raw_reaction_remove guild = discord.utils.find(lambda g : g.id == guild_id, member.guilds) AttributeError: 'NoneType' object has no attribute 'guilds'

1
Link provided should help with the problem. stackoverflow.com/a/66638693/15363060Hayden Wakenshaw

1 Answers

1
votes

You aren't getting a member object from the payload, so you are getting a 'NoneType' object has no attribute 'guilds' on member.guilds

However instead of this:

guild_id = payload.guild_id
guild = discord.utils.find(lambda g : g.id == guild_id, member.guilds)

I would recommend:

guild = bot.get_guild(payload.guild_id)

this might not fix your member problem but it is cleaner than trying to pull a guild object out of a members guilds.

also you have a typo: await member.add_removes(role), you probably meant remove_roles

EDIT:

You may want to filter out any non guild reactions by adding:

if not payload.guild_id:
    return

at the very top of your on_raw_reaction_add and on_raw_reaction_remove