@Bibarsest

Возможно выполнение одного из нескольких декораторов в discord.py?

Хочу, чтобы команда для бота срабатывала, если автор команды либо имеет права администратора, либо является владельцем бота. Простой код, работающий без "or @commands.is_owner()" на второй строчке:

@client.command()
@commands.has_permissions(administrator = True) or @commands.is_owner()
async def очисти(ctx, amount = 2, message = None):
	await ctx.channel.purge(limit = amount)

Ошибка:

@commands.has_permissions(administrator = True) or @commands.is_owner()
                                                   ^
SyntaxError: invalid syntax
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Ну во-первых, если бы вы хоть немного представляли, что такое декоратор и как он работает, то идея с or вам бы в голову не пришла...
А если бы покопались в документации, то нашли бы commands.check()
def check_if_it_is_me(ctx):
    return ctx.message.author.id == 85309593344815104

@bot.command()
@commands.check(check_if_it_is_me)
async def only_for_me(ctx):
    await ctx.send('I know you!')

Очевидно, что внутри предиката (в примере он назван check_if_it_is_me) можно помещать самую разную логику проверок.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы