Проверка есть ли роль у человека / discord.py

В данном боте я использую кнопки для получения роли, как сделать так чтобы при нажатии если у человека есть роль она забиралась? Т.е. - нажатие выдает роль, проверка есть ли уже у человека эта роль, если есть - забрать. Если непонятно написал, задайте вопрос, отвечу что мне нужно

Например: первое нажатие выдает роль "rolls1". Второе нажатие забирает роль "rolls1". Если кто то знает было бы идеально сделать еще что нельзя получить сразу несколько ролей по кнопке, пока человек не нажмет и бот не заберет роль например "rolls2" нельзя будет получить роль "patriot"

async def on_button_click(inter):

    res = 'Вы успешно взяли/вернули машину!'
    guild = bot.get_guild(inter.guild.id)

    if inter.component.id == "rolls1":
        cars = guild.get_role(1050528617383350292) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "rolls2":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "fordgt":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "feraf40":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "patriot":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "sprinter1":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "sprinter2":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)
    elif inter.component.id == "w222":
        cars = guild.get_role(1050528652116377620) 
        member = inter.author
        await member.add_roles(cars)
        await inter.reply(res, ephemeral = True)    

Ответы (1 шт):

Автор решения: denisnumb
if role in member.roles:
    await member.remove_roles(role)
else:
    await member.add_roles(role)

Запретить несколько ролей можно двумя способами:

Проверять количество ролей у пользователя — если len(member.roles) == 2 (@everyone и @другая_роль), то новую не выдавать. Соответственно, если len(member.roles) == 1, то есть только @everyone, то можно выдать.

Если подразумевается, что ролей может быть больше, то тогда уже надо проверять наличие всех ролей из списка в member.roles, и если хоть одна уже есть там, то новую не выдавать

→ Ссылка