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

时间:2020-11-05 23:30:57

标签: discord.py

使用discord.py运行Discord机器人时,如果编辑了用户的角​​色,则该机器人将看不到该信息。例如:

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

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

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

用户A(不在角色R中)使用“加入”命令。 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_roles(role)来翻转“离开”逻辑。

1 个答案:

答案 0 :(得分:0)

虽然您必须更新和添加默认意图,但我认为您的用例不需要 intents.members

我确实有一个类似的问题,虽然我一直启用 Intents.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]

这给了我新的角色列表