用户获得特定角色后,如何使用on_member_update执行操作?

时间:2020-10-23 23:46:09

标签: python discord.py roles

所以基本上我希望我的机器人使用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")

但它似乎不起作用。机器人也不会输出任何错误,因此我认为代码中的某些内容不正确,以致无法满足条件。是的,我实际写的条件,当然不是我实际要表达的条件。那么,我该如何扭曲我的代码,使其符合我的要求?

1 个答案:

答案 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.")