如何获得用户';角色、不和谐、Python

如何获得用户';角色、不和谐、Python,python,discord,Python,Discord,我一直在改进我的机器人。 现在,我已经知道了如何使bot清除消息,但是清除消息不应该被允许发送给任何成员,只能发送给具有特定角色的人 我已经完成了以下代码: if author.roles.has("BotModerator"): 我在这个网站()上寻找过它,但他们似乎是用Java编码的,我怎么能用Python呢 顺便说一下,输出中显示的错误是“list”对象没有atribute“has”它看起来像是作者。roles是python列表。您可以检查您的“僵尸版主”角色是否存在,如下所示: if

我一直在改进我的机器人。 现在,我已经知道了如何使bot清除消息,但是清除消息不应该被允许发送给任何成员,只能发送给具有特定角色的人

我已经完成了以下代码:

if author.roles.has("BotModerator"):
我在这个网站()上寻找过它,但他们似乎是用Java编码的,我怎么能用Python呢


顺便说一下,输出中显示的错误是“list”对象没有atribute“has”

它看起来像是
作者。roles
是python
列表
。您可以检查您的“僵尸版主”角色是否存在,如下所示:

if "BotModerator" in author.roles:
我自己还没有试过,所以目前无法验证

或者,如果每个角色都是一个对象,则可能需要以下内容:

role_names = [role.name for role in author.roles]
if "BotModerator" in role_names

如果每个角色都是dict,请尝试与上面相同的操作,但是使用
role['name']
role.get('name')
而不是role.name。

用户的角色是
角色
对象的列表,您需要访问角色的name属性。您可以使用列表理解

if "botmoderator" in [y.name.lower() for y in author.roles]:
但当然,这将该命令仅限于具有特定角色的人,即版主。它不能在其他服务器中使用,除非它们也有一个名为BotModerator的角色。我建议您改用id。如果您不知道如何操作,请标记角色,然后在名称前加反斜杠,然后发送。应该向您显示角色的id。然后您可以使用该id

if "role_id" in [y.id for y in author.roles]:

它一直在说我没有这个角色,当我有这个角色的时候。没关系,我忘了存钱了。谢谢你的帮助!嗯。事实上,只有在脚本中将角色名称设置为“botmoderator”时,它才起作用。如果我尝试其他操作,它会说我没有角色,即使我有。还要确保角色名称正确,包括表情符号(如果有)。我建议您使用角色的id来代替@norby当我尝试为角色使用其他名称时,会发生以下情况:|