所以基本上我希望我的机器人使用on_member_update,以便当用户获得“已验证”角色时,它会发送dm。到目前为止,我的代码是-
@client.event
async def on_member_update(before, after):
if str(before.roles) != "verified":
if str(after.roles) == "verified":
user = member.id
channel = client.get_user(user)
async with channel.typing():
time.sleep(2)
await channel.send("Verified")
但它似乎不起作用。机器人也不会输出任何错误,因此我认为代码中的某些内容不正确,以致无法满足条件。是的,我实际写的条件,当然不是我实际要表达的条件。那么,我该如何扭曲我的代码,使其符合我的要求?
答案 0 :(得分:0)
比较两个角色列表以查看添加了哪个角色,检查角色名称是否是您需要的角色,然后向他们发送消息。
@client.event
async def on_member_update(before, after):
added_role = set(after.roles) - set(before.roles)
verified = None
for r in added_role:
verified = r
if verified.name == "verified":
await after.send("You have been verified.")