discord.py bot 检测用户名更改

时间:2021-07-22 03:26:44

标签: discord discord.py

试图为我的服务器制作一个小机器人。它有点工作,但如果用户删除昵称,机器人将返回一个 None 值。我该如何解决这个问题?

目标是让机器人检测用户的昵称或用户名中是否有 TBU,如果有,将他添加到 discord 中的角色(还没有添加这个,需要查看它)但如果更改删除名称中的 TBU,删除角色。

@client.event
async def on_member_update(before, after):
    if before.nick != after.nick:  # to only run on status
        embed = discord.Embed(title=f"Changed nick")
        embed.add_field(name='User', value=before.mention)
        embed.add_field(name='Before', value=before.nick)
        embed.add_field(name='After', value=after.nick)
        # send to admin or channel you choose
        channel = client.get_channel(526517582963146762)  # notification channel
        await channel.send(embed=embed)
        admin = client.get_user(174749290902716417)  # admin to notify
        await admin.send(embed=embed)

        if "TBU" in after.nick:
            admin = client.get_user(174749290902716417)  # admin to notify
            await admin.send(embed=embed)
            
        if "TBU" in before.nick and not "TBU" in after.nick:
            admin = client.get_user(174749290902716417)  # admin to notify
            await admin.send(embed=embed)

1 个答案:

答案 0 :(得分:1)

当用户没有昵称时,nick 返回 None。

if before.nick != after.nick 更改为 if before.nick != after.nick and after.nick is not None,这应该可以工作。