在discord.py中调用on_member_update时如何访问成员?

How to access member when calling on_member_update in discord.py?

我正在尝试创建一个 discord 机器人,一旦成员离开 offline/invisible,它就会为该成员添加一个特定的角色。

这是我的代码。

@ bot.event
async def on_member_update(before, after):
    if str(before.status) == "online":
        if str(after.status) == "offline":
            guild = bot.get_guild(1234567890)
            role = discord.utils.find(lambda r: r.name == 'rolename', guild.roles)
            await member.add_roles(role)

每次我 运行 它时,我都会收到一条错误消息,指出该成员未定义。如何将成员定义为更新状态的人?谢谢

参数beforeafter都是成员对象,这意味着您可以只使用其中一个来添加角色:

@bot.event
async def on_member_update(before, after):
    if str(before.status) == "online":
        if str(after.status) == "offline":
            # also would be able to get the guild via after.guild or before.guild
            guild = bot.get_guild(1234567890)
            role = discord.utils.find(lambda r: r.name == 'rolename', guild.roles)
            await after.add_roles(role)

参数简单;

  • 更新前的discord.Member对象,即before
  • 更新后的discord.Member对象,即after

参考文献: