我一直在改进和改进我的机器人。 现在,我已经弄清楚如何制作机器人清除消息,但不应该允许任何成员,只有具有特定角色的人才能使用清除消息。
我已经完成了这段代码:
if author.roles.has("BotModerator"):
我已经在这个网站上找到了它(https://anidiotsguide.gitbooks.io/discord-js-bot-guide/information/understanding_roles.html),但似乎他们正在用Java编码,我怎么能用Python做呢?
顺便说一句,输出中显示的错误是' list'对象没有属性'有'
答案 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。