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)意味着需要角色和权限意味着他们也需要权限但你需要有不和谐的角色权限否则它会发送它不知道哪种权限
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()
此代码允许机器人在发送链接时忽略具有该角色的人员。
TA贡献1856条经验 获得超11个赞
我在最近创建的机器人中正是这样做的,我将命令设置为 JSON 配置,其中包含语法、描述和允许的角色等数据。该机器人使用 DiscordJS,但我确信您可以对 Python 机器人使用相同的原理:
if (cmd.allowedRoles.includes('everyone') || message.member.roles.cache.some(role => cmd.allowedRoles.includes(role.name.toLowerCase())))
添加回答
举报