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

时间:2020-06-07 07:30:15

标签: python discord discord.py discord.py-rewrite

我正在尝试创建一个Discord机器人,该机器人一旦成员离线/不可见,便会向该成员添加特定角色。

这是我的代码。

@ 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)

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

1 个答案:

答案 0 :(得分:2)

参数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

参考: