我想使用 Discord 角色作为命令的要求

我正在用 Python 编写一个 Discord 机器人,我想创建一个需要角色的命令。有没有办法在 if 语句中使用角色作为要求?



侃侃尔雅
浏览 155回答 4
4回答

守候你守候我

你只需要做@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)意味着需要角色和权限意味着他们也需要权限但你需要有不和谐的角色权限否则它会发送它不知道哪种权限

九州编程

您可以使用@client.command()@commands.has_permissions(**permission needed**=True)这将只允许具有特定权限的人执行该命令(错误消息选项)。或者,如果您只想要具有某个角色的人员,您可以使用 if message.author.role.id == **role id**: 或 if ctx.message.author.role.id == **role id**:。这是一个示例代码:@client.eventasync 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()           此代码允许机器人在发送链接时忽略具有该角色的人员。

呼唤远方

我在最近创建的机器人中正是这样做的,我将命令设置为 JSON 配置,其中包含语法、描述和允许的角色等数据。该机器人使用 DiscordJS,但我确信您可以对 Python 机器人使用相同的原理:if (cmd.allowedRoles.includes('everyone') || message.member.roles.cache.some(role => cmd.allowedRoles.includes(role.name.toLowerCase())))

牧羊人nacy

您可以使用 argparse 并创建一个名为 role 的必需参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python