[英]Discord.py: Changing Nickname if user has specific role
我想让我的机器人更改某人的昵称,如果这个用户有一个特定的角色,那么几乎是一个角色前缀系统。 所以我像这样尝试过,但它一直给我错误“缺少权限”。 这是我的代码:
@client.event
@has_role("Admin")
async def on_member_update(nick, member):
await member.edit(nick="Admin | ")
机器人根本没有编辑成员的权限,它在层次结构上太低了,或者它是服务器的所有者。 另请注意, has_role
装饰器仅适用于命令,不适用于事件
要使其工作,您应该使用 if 语句或创建自己的装饰器
@client.event
async def on_member_update(before, after):
role = discord.utils.get(before.guild.roles, name="Admin")
if after in role.members:
# Change the nick
from functools import wraps
def has_admin_role(coro):
@wraps(coro)
async def wrapper(before, after):
role = discord.utils.get(before.guild.roles, name="Admin")
if after in role.members:
await coro(before, after)
return wrapper
@client.event
@has_admin_role # Without calling it, it's hardcoded
async def on_member_update(before, after):
# Edit the nick
另请注意, has_admin_role
装饰器仅适用于on_member_update
事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.