discord.py - Команда для изменения ролей, которые нельзя использовать, если у роли есть разрешения, которых у пользователя нет

Я делаю Discord BOT с использованием библиотеки discord.py-rewrite, и у меня возникла проблема. Действительно, я делаю команду, которая может удалить все разрешения из указанных нами ролей. Но я хочу, чтобы эту команду могли использовать только участники с разрешением Manage Roles, но участники также должны иметь все разрешения ролей, которые они изменяют. Например, участник с разрешением Manage Roles, но без разрешения View Audit Log НЕ СМОЖЕТ выполнить эту команду для ролей с разрешение View Audit Log. Кто-нибудь, пожалуйста, как я могу справиться с этим?


person TheOneMusic    schedule 15.04.2019    source источник


Ответы (1)


Получите Permissions роли и автора, затем подтвердите, что разрешения роли являются подмножеством разрешений авторов:

@bot.command()
@has_permissions(manage_roles=True)
async def remove_role(ctx, *, role: Role):
    if role.permissions <= ctx.author.permissions_in(ctx.message.channel):
        ...
    else:
        await ctx.send("You are missing permissions")
person Patrick Haugh    schedule 15.04.2019
comment
Большое спасибо за ответ Патрик Хо, но это не работает :( - person TheOneMusic; 16.04.2019
comment
Нужно ли нам зацикливать разрешения каждой роли и смотреть, есть ли у автора все эти разрешения? - person TheOneMusic; 16.04.2019
comment
Нет, объект Permissions предоставляет нам функции подмножества. Что вы имеете в виду, когда говорите, что это не работает? Вы видите ошибку, разрешает ли это людям без правильных разрешений или ограничивает людей, у которых есть правильные разрешения? - person Patrick Haugh; 16.04.2019
comment
Я тестировал это на собственном сервере, но он не позволяет мне использовать команду - person TheOneMusic; 30.04.2019