如何获得用户的角色,Discord,Python

时间:2017-07-03 19:53:29

标签: python discord

我一直在改进和改进我的机器人。 现在,我已经弄清楚如何制作机器人清除消息,但不应该允许任何成员,只有具有特定角色的人才能使用清除消息。

我已经完成了这段代码:

if author.roles.has("BotModerator"):

我已经在这个网站上找到了它(https://anidiotsguide.gitbooks.io/discord-js-bot-guide/information/understanding_roles.html),但似乎他们正在用Java编码,我怎么能用Python做呢?

顺便说一句,输出中显示的错误是' list'对象没有属性'有'

2 个答案:

答案 0 :(得分:3)

User所拥有的角色是role个对象的列表,您需要访问该角色的name属性。你可以使用列表理解。

if "botmoderator" in [y.name.lower() for y in author.roles]:

但是,当然,这会将命令仅限于具有特定角色的人BotModerators。它不能在另一台服务器中使用,除非它们还有一个名为BotModerator的角色。我建议你改用id。如果您不知道如何,请标记该角色,然后在名称前添加反斜杠,然后发送。应该告诉你角色的身份。然后你可以改用它。

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

答案 1 :(得分:2)

看起来author.roles是一个python list。您可以检查是否存在“BotModerator”角色,如下所示:

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。