(discord.py) 如何获取用户拥有多少权限的列表

Posted

技术标签:

【中文标题】(discord.py) 如何获取用户拥有多少权限的列表【英文标题】:(discord.py) How can I get a list of how many permissions a user has 【发布时间】:2020-11-15 10:18:51 【问题描述】:

我目前正在为我的机器人创建一个“userinfo”命令,该命令返回用户 ID、角色、个人资料图片等一般信息。我还希望它显示提到的用户拥有多少权限的列表。这是我为上下文定义 member 的代码部分:

@client.command(aliases=["whois"])
async def userinfo(ctx, member: discord.Member = None):
    if not member:  # if member is no mentioned
        member = ctx.message.author  # set member as the author
    ...

我知道您可以执行member.guild_permissions.<permission>,它返回用户是否具有权限,但我想知道是否有一种方法可以获取用户拥有多少权限的列表而无需检查每个权限。

那么有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

你实际上可以使用Member.guild_permissions:

@client.command(aliases=["whois"])
async def userinfo(ctx, member: discord.Member = None):
    if not member:
        member = ctx.message.author
    perm_list = [perm[0] for perm in member.guild_permissions if perm[1]]

Member.guild_permission 返回一个元组列表(例如(manage_permissions, True))。如果是True,您可以浏览此列表并将权限添加到另一个列表。

【讨论】:

以上是关于(discord.py) 如何获取用户拥有多少权限的列表的主要内容,如果未能解决你的问题,请参考以下文章

discord.py 如何接受可选参数

Discord.py 在命令方法上使用多个权限检查装饰器

如何获取在 discord.py 中引发错误的命令名称?

如何使用 discord.py 获取不和谐用户的用户 ID

Discord.py:如何从 UserID 获取用户?

如何使用用户帐户获取/获取消息 (discord.py)