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())))
添加回答
舉報