Команды для админов

Делаю бота и не хочется некоторые команды такие как clear использовали обычные смертные. Как сделать ограничение по роли на примере:

import discord
import asyncio
from discord.ext import commands
from discord.ext.commands import Bot

prefix = '$'

bot = commands.Bot(command_prefix= prefix)
token = open('token.txt' , 'r').readline()

@bot.command()
async def clear(ctx, amount=None):
    await ctx.channel.purge(limit=int(amount))
    await ctx.channel.send(':: Сообщения успешно удалены')

print('Готов')
bot.run(token)

Ответы (1 шт):

Автор решения: Fixator10

Использовать проверки:

@bot.command()
@commands.has_guild_permissions(manage_messages=True)  # проверка на права по всей гильдии (серверу)
# https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/api.html#discord.ext.commands.has_guild_permissions
# ИЛИ
@commands.has_permissions(manage_messages=True)  # проверка на права в текущем контексте
# https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/api.html#discord.ext.commands.has_permissions
# ИЛИ
@commands.has_role(416829945415948615)  # так же может быть строкой с названием роли
# https://discordpy.readthedocs.io/en/v1.3.4/ext/commands/api.html#discord.ext.commands.has_role
async def clear(ctx, amount=None):
    await ctx.channel.purge(limit=int(amount))
    await ctx.channel.send(':: Сообщения успешно удалены')

если указано несколько проверок, то они будут проверяться по логике "И" - если все три проверки вернут True, тогда команда выполнится

→ Ссылка