Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Discord.py:如果用户具有特定角色,则更改昵称_Python_Discord_Discord.py - Fatal编程技术网

Python Discord.py:如果用户具有特定角色,则更改昵称

Python Discord.py:如果用户具有特定角色,则更改昵称,python,discord,discord.py,Python,Discord,Discord.py,我想让我的机器人改变某人的昵称,如果这个用户有一个特定的角色,那么相当于一个角色前缀系统。所以我试着这样做,但它总是给我错误“缺少权限”。这是我的密码: @client.event @has_role("Admin") async def on_member_update(nick, member): await member.edit(nick="Admin | ") bot根本没有编辑成员的权限,它在层次结构中的位置太低,或者它是服务器的所有

我想让我的机器人改变某人的昵称,如果这个用户有一个特定的角色,那么相当于一个角色前缀系统。所以我试着这样做,但它总是给我错误“缺少权限”。这是我的密码:

@client.event
@has_role("Admin")
async def on_member_update(nick, member):
    await member.edit(nick="Admin | ")

bot根本没有编辑成员的权限,它在层次结构中的位置太低,或者它是服务器的所有者。还要注意的是,
具有_角色
装饰器仅对命令有效,而对事件无效

要使其工作,您应该使用if语句或创建自己的decorator

  • if语句
@client.event
成员更新时的异步定义(之前、之后):
role=discord.utils.get(before.guild.roles,name=“Admin”)
如果在role.members之后:
#换个缺口
  • 定制装饰师
从functools导入包装
def具有管理员角色(coro):
@包装(coro)
异步def包装(之前、之后):
role=discord.utils.get(before.guild.roles,name=“Admin”)
如果在role.members之后:
等待coro(之前、之后)
返回包装器
@客户端事件
@具有“管理”角色,但没有调用它,它是硬编码的
成员更新时的异步定义(之前、之后):
#编辑刻痕

另外请注意,
具有管理员角色
装饰者只会处理
on\u member\u update
事件。

您可以发布整个回溯吗?它是整个代码,其他所有内容都是其他事件、命令和导入IM请求错误,而不是codediscord。错误。禁止:403禁止(错误代码:50013):缺少权限bot根本没有编辑成员的权限,它在层次结构中的位置太低,或者它是服务器的所有者。还要注意的是,
has_role
decorator只对命令有效,对事件无效。它说“discord.utils没有属性get_roles”。哦,是的,对不起,我的错。让我来编辑