我正在尝试创建一个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)
每次运行它时,都会收到一条错误消息,指出未定义该成员。如何将会员定义为更新其状态的人?谢谢。
答案 0 :(得分:2)
参数before
和after
都是成员对象,这意味着您可以使用任一个来添加角色:
@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
参考:
Member.add_roles()
Member.guild
-获取成员更新所在的行会的替代方法。 on_member_update()
-Member
对象在下面的括号中指出。