Discord.py Переписать - Как я могу получить разрешения пользователя в виде списка? - PullRequest
0 голосов
/ 16 апреля 2019

ПРИМЕЧАНИЕ. В этом сообщении содержатся теги Discord.py и Discord.py-Rewrite, поскольку Discord.py Rewrite был официально выпущен и "заменил" асинхронную версию.

========================================================

Я пытаюсь создать свой собственный модуль форматирования справки для моих Discord Bots (модуль форматирования справки, который будет иметь многоязычную поддержку), но мне нужен способ получить права пользователя IN команда справки, не в начале

То, что я делаю в моем справочном устройстве форматирования, - это открытие файлов и чтение строки X, чтобы X печатал на Discord.Это работает отлично, но я хочу ограничить это, потому что кто-то мог увидеть «команду администратора» (если я ее поставил), выполнив команду справки для команды администратора.Итак, я бы поставил в конце каждого файла разрешения, необходимые для просмотра команды.

Со стороны бота я бы хотел, чтобы бот получал разрешения пользователя как перечислите со всеми разрешениями, которые есть у пользователя, не с идентификаторами разрешений, а с именами разрешений, такими как manage_message или ban_members, и тому подобное, поэтому я могу прочитать это разрешение в конце файла и затем посмотреть если это разрешение есть в списке разрешений пользователя .

Заранее спасибо за ответ.

1 Ответ

0 голосов
/ 16 апреля 2019

Предполагая, что у вас есть имена разрешений на сопоставление словаря в списки строк:

perm_command_map = {
    "manage_messages": ["Command1", "Command2"],
    "kick_members": ["Command3", "Command4"]
}

Вы можете получить список всех вещей, к которым у пользователя есть доступ, используя Member.permissions_in метод, чтобы получить объект Permissions, а затем использовать его для определения индивидуальных разрешений (Если вам нужны только разрешения уровня гильдии, просто используйте Member.permissions):

allowed_commands = []
permissions = message.author.permissions_in(message.channel)
for perm, commands in perm_command_map.items():
    if getattr(permissions, perm):
        allowed_commands.extend(commands)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...