我正在用Python编写Discord机器人,我想创建一个需要角色的Command。是否可以在if语句中使用角色作为要求?
答案 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。