Search code examples
pythondiscorddiscord.py

Discord py - reaction role


** want to make reaction role which if user react message on specific channel will get role but it doesn't work**

@client.event
async def on_reaction_add(member):
  ChannelID = 932268491556405268
  role = discord.utils.get(member.guild.roles, id=941124409341648957)
  if member.message.channel.id != ChannelID:
    return
  if member.emoji == "1️⃣":
    await member.add_roles(role, reason=None, atomic=True)

Solution

  • You can use the payload object from on_raw_reaction_add to do what you want

    @client.event
    async def on_raw_reaction_add(payload):  # Requires Intents.reactions
        channel = client.get_channel(...)
        guild = client.get_guild(payload.guild_id)
        role = discord.utils.get(guild.roles, id=...)
    
        if str(payload.emoji) == "1️⃣":
            await payload.member.add_roles(role, atomic=True)
            await channel.send(...)