'AutoRole Discord.py

so I make a simple auto role, is good and work as well

this is my code


@bot.event
async def on_member_join(member):
    role = discord.utils.get(member.guild.roles, name="Member")
    await member.add_roles(role)
 
    if discord.utils.get(member.guild.roles, name="Fruits"):
        role = discord.utils.get(member.guild.roles, name="Fruits")
        await member.remove_roles(role)

and I want if the user gets role name "Fruits" the role name "Member" will automatically remove from the user, but this doesn't work for me, so after the user gets role name "Fruits" the role name "Member" doesn't remove from the user

I hope u guys can help me solve this problem Thank You!



Solution 1:[1]

From your code:

    Member = discord.utils.get(member.guild.roles, name="Member")
    await member.add_roles(Member)
 
    if discord.utils.get(member.guild.roles, name="Fruits"):
        Fruits = discord.utils.get(member.guild.roles, name="Fruits")
        await member.remove_roles(Fruits)

You first define role as the "Member" role, and then reassign the variable for "Fruits" role, so in the last line (await member.remove_roles(role)) the role which is removed is "Fruits", not "Members". Simply use different variables for both role. Hope I was clear with my answer

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kai - Kazuya Ito