Команды для админов
Делаю бота и не хочется некоторые команды такие как 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, тогда команда выполнится