Pr0sto_Danya
@Pr0sto_Danya
Начинающий программист

Как заставить бота проверять персональные права пользователей?

Я пытаюсь заставить бота изменять лимит участников голосового канала, при условии, что участник имеет право управления каналом

@client.command()
async def limit(ctx, arg): 
    channel5 = ctx.author.voice.channel
    perm = channel5.permissions_for(ctx.message.author)
    if perm == 'manage_channels':
        await channel5.edit (user_limit = arg)
        await ctx.send(f'Лимит участников изменен на {arg}')
    else:
        await ctx.send('У вас недостаточно прав для выполнения данной команды')

Но при использовании команды бот в любом случае выдает else
Я четко понимаю, что проблема скорее всего в этой строчке:
if perm == 'manage_channels':
Как это исправить?
  • Вопрос задан
  • 401 просмотр
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
О, сколько нам открытий чудных готовит официальная документация...
Смотрим GuildChannel.permissions_for(), видим
Return type: Permissions

Клик. Читаем (выделено мной):
Wraps up the Discord permission value.

The properties provided are two way. You can set and retrieve individual bits using the properties as if they were regular bools. This allows you to edit permissions.

Т.е. у объекта этого класса есть указанные выше свойства, и значительная доля из них - это логические значения (bool). Тебе нужно manage_channels? Тогда проверка должна выполняться примерно так: if perm.manage_channels:
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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