![](/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.