我想使用不和谐角色作为命令的要求

时间:2020-10-07 15:51:18

标签: python discord discord.py

我正在用Python编写Discord机器人,我想创建一个需要角色的Command。是否可以在if语句中使用角色作为要求?

4 个答案:

答案 0 :(得分:1)

我已经在最近创建的机器人中做到了这一点,我将命令设置为JSON配置,并带有包括语法,描述和允许角色的数据。该机器人使用DiscordJS,但我确定您可以对Python机器人使用相同的原理:

if (cmd.allowedRoles.includes('everyone') || message.member.roles.cache.some(role => cmd.allowedRoles.includes(role.name.toLowerCase())))

答案 1 :(得分:1)

您可以使用

@client.command()
@commands.has_permissions(**permission needed**=True)

仅允许具有特定权限的人执行命令(错误消息选项)。或者,如果您只希望有角色的人可以使用 if message.author.role.id == **role id**: 要么 if ctx.message.author.role.id == **role id**:。这是示例代码:

@client.event
async def on_message(message):

    link = ["https://"]
    for word in link:
        if message.content.count(word) > 0:
            if message.author.role.id == 706694479847096381:
                return
            else:
                print(f'{message.author}({message.author.id}) Sent an link')
                await message.delete()
           

此代码允许漫游器在发送链接时忽略具有该角色的人。

答案 2 :(得分:1)

您只需要做

@client.command()
@commands.has_role(role='Role name')
    async def command(ctx): 

是的 否则,如果需要将@commands.has_role(role='Role name')放在@client.command()上方 如果不明白,可以阅读文档

或者您也可以执行@commands.has_permission(kind of permission=True/False)的角色,这意味着 NEED 角色,而权限则意味着他们也需要该权限,但是您需要拥有一个不一致角色权限,否则它会发送不知道的权限

答案 3 :(得分:0)

您可以使用argparse并创建一个称为role的必需参数。看看documentation