【发布时间】:2021-02-18 17:25:08
【问题描述】:
使用 discord.py 运行 Discord 机器人时,如果编辑了用户的角色,机器人将无法看到信息。例如:
1: 用户 A(不是角色 R)使用“加入”命令。 Bot 将用户添加到 R。
用户 A(现在是角色 R)使用“离开”命令。 Bot 认为用户不在 R 中并抱怨。
2: 用户 A(角色 R)使用“离开”命令。 Bot 从 R 中删除用户
用户 A(不是角色 R)使用“加入”命令。 Bot 认为用户已经在 R 中并抱怨。
如果我使用调试器并检查给定的用户,该角色似乎永远不会被添加/删除。 虽然角色更改确实出现在 Discord 本身中。重新启动机器人允许在它中断之前再次更新,所以它让我认为当用户的角色更改时某些内容没有更新。
代码也很简单:
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) 代替。
【问题讨论】:
-
你升级 discord.py 到 1.5 并添加了
intents? -
我想到了使用意图,但并不是说我是个傻瓜并且有一个过时的 Discord.py。我会尝试更新并从那里开始,谢谢!
标签: discord.py