【问题标题】:Discord.py - Role Prefix SystemDiscord.py - 角色前缀系统
【发布时间】:2021-02-22 21:13:41
【问题描述】:

所以我的代码有问题,但我不知道是什么。我基本上试图编写一个角色前缀系统,它改变了具有特定角色的用户的昵称,在本例中为“管理员”。它一直给我错误:“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)

【问题讨论】:

  • 这能回答你的问题吗? Changing a user's nickname -- Discord.py
  • 不,它没有,这就是为什么我在答案下发表评论,但我不想等到你阅读它,所以我问了另一个问题
  • 我已经编辑了我的答案以包含您的新问题。

标签: python discord discord.py


【解决方案1】:

可能是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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2014-01-11
    • 2021-02-07
    • 2021-04-08
    • 1970-01-01
    相关资源
    最近更新 更多