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”。哦,是的,对不起,我的错。让我来编辑