试图为我的服务器制作一个小机器人。它有点工作,但如果用户删除昵称,机器人将返回一个 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)
答案 0 :(得分:1)
当用户没有昵称时,nick 返回 None。
将 if before.nick != after.nick
更改为 if before.nick != after.nick and after.nick is not None
,这应该可以工作。