Discord.py - 角色前缀系统

时间:2021-02-22 12:56:22

标签: python discord discord.py

所以我的代码有问题,但我不知道是什么。我基本上尝试编写一个角色前缀系统,该系统更改具有特定角色的用户的昵称,在这种情况下为“管理员”。它不断给我错误:“NoneType”对象没有属性“startswith”有人可以帮我吗?这是我的代码:

@client.event
async def on_member_update(before, after):
role = discord.utils.get(before.guild.roles, name="Admin")
   if after.nick.startswith("Admin | "):
       return
   if after in role.members:
       await after.edit(nick="Admin | " + after.display_name, reason=None)

1 个答案:

答案 0 :(得分:2)

可能是因为 nick 属性为 None / 该成员没有昵称,您应该检查 nick 属性是否为 None。

@client.event
async def on_member_update(before, after):
    role = discord.utils.get(before.guild.roles, name="Admin")

    # Does this user has no nickname?
    if after.nick is not None:
        
        # OK, we can check if he / she has the Admin prefix
        if after.nick.startswith("Admin | "):
            # Looks like he already has one, let's just skip this
            return

    # Ok, he / she doesn't have a nickname (or doesn't have an admin prefix), we can continue our code

    if after in role.members:
        await after.edit(nick="Admin | " + after.display_name, reason=None)