Discord.py未看到用户/成员角色的更新

Discord.py未看到用户/成员角色的更新,discord.py,Discord.py,使用Discord.py运行Discord bot时,如果编辑了用户的角色,则bot无法查看信息。例如: 1: 用户A(不在角色R中)使用“join”命令。Bot将用户添加到R 用户A(现在扮演角色R)使用“离开”命令。Bot认为用户不在R中并抱怨 2: 用户A(角色R)使用“离开”命令。Bot从R中删除用户 用户A(不在角色R中)使用“join”命令。Bot认为用户已经在R中并抱怨 如果我使用调试器并检查给定用户,则该角色似乎从未被添加/删除。不过,角色的变化确实出现在Discord内部。重新

使用Discord.py运行Discord bot时,如果编辑了用户的角色,则bot无法查看信息。例如:

1: 用户A(不在角色R中)使用“join”命令。Bot将用户添加到R

用户A(现在扮演角色R)使用“离开”命令。Bot认为用户不在R中并抱怨

2: 用户A(角色R)使用“离开”命令。Bot从R中删除用户

用户A(不在角色R中)使用“join”命令。Bot认为用户已经在R中并抱怨

如果我使用调试器并检查给定用户,则该角色似乎从未被添加/删除。不过,角色的变化确实出现在Discord内部。重新启动bot允许在它崩溃之前再次更新一次,因此它让我觉得当用户角色发生变化时,有些东西没有更新

代码也非常简单:

async def giveRole(user, wantedRole, message):
    role = getRoleToAdd(wantedRole) # some logic to get the role to leave/join, verified to work

    if role in user.roles:
        await message.channel.send("You've already joined that role")

    else:
        await user.add_roles(role)

“离开”逻辑只是使用user.remove_角色(role)来翻转的。

虽然您必须更新和添加默认意图,但我认为您不需要
意图。成员
用于您的用例

我确实有一个类似的问题,尽管我一直启用了
intent.members
,但我的问题是,在分配新角色之前和之后,我重用了相同的成员对象来检查角色

roles_before = [role.name for role in updated_roles_member.roles]
await assignRolesToUser(roleList, mentioned_user, message.guild)
updated_roles_member = await mentioned_user.guild.fetch_member(mentioned_user.id)
roles_now = [role.name for role in updated_roles_member.roles]

这给了我一个新的角色列表

您是否将discord.py升级到1.5并添加了
意图
?我想到了使用意图,但并不是说我是一个傻瓜,有一个过时的discord.py。我将尝试更新并从那里开始,谢谢!