簡體   English   中英

discord.py - 獲取用戶的頻道權限

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM