![](/img/trans.png)
[英]discord.py Get channel permissions and use them in a different channel
[英]discord.py - Get channel permissions of user
我正在尝试创建一个列出用户在当前频道中拥有的权限的命令。 我尝试使用 function 将权限添加到列表并在命令中调用它。
不幸的是,这个命令发送的是成员可能拥有的所有权限,而不是成员当前拥有的权限。 我如何编辑我的代码以查找成员当前拥有的权限?
@commands.command()
async def perms(self, ctx, user):
def _perms(ctx):
perms = []
for p in user.permissions_in(ctx.channel):
perms.append(p[0])
return perms
await ctx.send(" ".join(_perms(ctx)))
如文档中所述, discord.Permissions object 通过返回元组列表(permission_name, permission_value)
定义__iter__
-方法,其中如果成员具有权限,则permission_value
将为True
,否则为False
。 在将名称附加到列表之前,您只需检查值是否为真,如下所示:
for p in user.permissions_in(ctx.channel):
if p[1] is True:
perms.append(p[0])
也就是说,您对_perms
的定义完全没有必要,您的代码可以改进/缩短很多。 以下单线也应该做你想做的事:
@commands.command()
async def perms(self, ctx, user):
await ctx.send(" ".join(p[0] for p in user.permissions_in(ctx.channel) if p[1]))
一般来说,应该采取一些预防措施,以防用户对频道没有权限(机器人不能发送空消息,会抛出错误)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.