Discord.py 角色权限

Discord.py Permissions on roles

为什么 ctx.guild.default_role.permissions.change_nickname()

输出这个: discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: 'bool' object is not callable

文档中说:

@flag_value
def change_nickname(self):
  """:class:`bool`: Returns ``True`` if a user can change their nickname in the guild."""
  return 1 << 26

change_nickname 不是一个方法,所以你不能用括号调用它。你只需写 ctx.guild.default_role.permissions.change_nickname

当您将命令发送到频道时,您需要它是一个字符串并且更改昵称也不是一种方法。

为此只需使用 perms = str(ctx.guild.defualt_role.permissions.change_nickname)

ctx.send(烫发)

尝试使用

ctx.guild.default_role.permissions.change_nickname

所以想切换默认角色的这个设置。 @比利德夫

根据命令编辑角色权限

@client.command()
async def toggle(ctx):
    perms = discord.Permissions()
    perms.update(read_messages = True, read_message_history = True, send_messages = False, change_nickname=True) 
    #add more permissions

    for role in guild.roles:
        if role.name == "role_name":
             await role.edit(reason = None, colour = discord.Colour.orange(), permissions=perms)

这会将名为 role_name 的角色的权限编辑为 'can change nickname' :)