如何获取用户的角色,Discord,Python
How to get user's roles, Discord, Python
我一直在改进我的机器人。
现在,我已经想出了如何制作机器人清除消息,但是清除消息不应该被允许给任何成员,只能给具有特定角色的人。
我已经完成了这段代码:
if author.roles.has("BotModerator"):
我在这个网站上找过(https://anidiotsguide.gitbooks.io/discord-js-bot-guide/information/understanding_roles.html),但好像他们是用Java编码的,我怎么能在Python中做呢?
顺便说一下,输出中显示的错误是 'list' object has no attribute 'has'
看起来 author.roles
是 python list
。您可以像这样检查 "BotModerator" 角色是否存在:
if "BotModerator" in author.roles:
自己没试过,暂时无法验证。
或者,如果每个角色都是一个对象,您可能需要这样的东西:
role_names = [role.name for role in author.roles]
if "BotModerator" in role_names
如果每个角色都是字典,请尝试与上面相同的方法,但使用 role['name']
或 role.get('name')
而不是 role.name。
User
拥有的角色是 role
对象的列表,您需要访问角色的名称 属性。您可以使用列表理解。
if "botmoderator" in [y.name.lower() for y in author.roles]:
但是,当然,这将该命令限制为仅具有特定角色 BotModerators 的人。它不能在另一台服务器中使用,除非它们也具有称为 BotModerator 的角色。我建议您改用 id。如果您不知道如何操作,请标记角色,然后在名称前加一个反斜杠,然后发送。应该向您显示角色的 ID。然后你可以用它来代替。
if "role_id" in [y.id for y in author.roles]:
我一直在改进我的机器人。 现在,我已经想出了如何制作机器人清除消息,但是清除消息不应该被允许给任何成员,只能给具有特定角色的人。
我已经完成了这段代码:
if author.roles.has("BotModerator"):
我在这个网站上找过(https://anidiotsguide.gitbooks.io/discord-js-bot-guide/information/understanding_roles.html),但好像他们是用Java编码的,我怎么能在Python中做呢?
顺便说一下,输出中显示的错误是 'list' object has no attribute 'has'
看起来 author.roles
是 python list
。您可以像这样检查 "BotModerator" 角色是否存在:
if "BotModerator" in author.roles:
自己没试过,暂时无法验证。
或者,如果每个角色都是一个对象,您可能需要这样的东西:
role_names = [role.name for role in author.roles]
if "BotModerator" in role_names
如果每个角色都是字典,请尝试与上面相同的方法,但使用 role['name']
或 role.get('name')
而不是 role.name。
User
拥有的角色是 role
对象的列表,您需要访问角色的名称 属性。您可以使用列表理解。
if "botmoderator" in [y.name.lower() for y in author.roles]:
但是,当然,这将该命令限制为仅具有特定角色 BotModerators 的人。它不能在另一台服务器中使用,除非它们也具有称为 BotModerator 的角色。我建议您改用 id。如果您不知道如何操作,请标记角色,然后在名称前加一个反斜杠,然后发送。应该向您显示角色的 ID。然后你可以用它来代替。
if "role_id" in [y.id for y in author.roles]: