为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

侃侃尔雅 2023-10-18 21:44:09
我正在用 Python 编写一个 Discord 机器人,我想创建一个需要角色的命令。有没有办法在 if 语句中使用角色作为要求?
查看完整描述

4 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

你只需要做


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


查看完整回答
反对 回复 2023-10-18
?
九州编程

TA贡献1785条经验 获得超4个赞

您可以使用


@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()

           

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


查看完整回答
反对 回复 2023-10-18
?
呼唤远方

TA贡献1856条经验 获得超11个赞

我在最近创建的机器人中正是这样做的,我将命令设置为 JSON 配置,其中包含语法、描述和允许的角色等数据。该机器人使用 DiscordJS,但我确信您可以对 Python 机器人使用相同的原理:

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



查看完整回答
反对 回复 2023-10-18
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

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



查看完整回答
反对 回复 2023-10-18
  • 4 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信