de-kieru
@de-kieru

Как можно сделать проверку на роль у того, кто прописывает команду?

@bot.command(pass_context=True, aliases = ["очистить"])
@commands.has_permissions(administrator = True)
async def clear(ctx, Limit=None):
    if Limit == None:
        await ctx.channel.purge(limit=None)
    else:
        await ctx.channel.purge(limit=int(Limit)+1)

Такой код команды, для проверки пользуюсь вторым аккаунтом в дискорде. Команда выполняется и без прав администратора, а в консоли ошибка:
discord.ext.commands.errors.MissingPermissions: You are missing Administrator permission(s) to run this command.


Как можно исправить?
  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ответы на вопрос 1
Denkuwus
@Denkuwus
15 y.o
Похоже, вы используете декоратор @commands.has_permissions(administrator = True), чтобы проверить, есть ли у пользователя, запускающего команду, необходимые разрешения. Этот декоратор проверит разрешения пользователя и выдаст ошибку MissingPermissions, если у пользователя нет необходимых разрешений.

Однако похоже, что команда все еще выполняется, даже если у пользователя нет необходимых разрешений. Это может быть связано с несколькими вещами:

Декоратор @commands.has_permissions(administrator = True) неправильно применяется к команде. Убедитесь, что он расположен непосредственно над определением функции очистки.

Декоратор @commands.has_permissions(administrator = True) каким-то образом обходится. Убедитесь, что вы используете правильный синтаксис для декоратора и что он не изменяется и не удаляется каким-либо образом.

Пользователь, запускающий команду, может иметь необходимые разрешения, даже если вы этого не ожидаете. Убедитесь, что роли и разрешения пользователя настроены правильно.

Надеюсь, это поможет!
Ответ написан
Ваш ответ на вопрос

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

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