Как мне ограничить команды discord bot правами владельца бота или администратора?

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Хорошо, итак, у меня есть бот, который выполняет каждую команду, которую я пишу @commands.has_permissions(administrator = True) , но теперь я хочу выполнить некоторые команды в dm, однако, когда я собираюсь это сделать, бот выдает ошибку и говорит, что у меня нет прав администратора. Я могу изменить строку на @commands.is_owner() , но тогда это могу сделать только я, поэтому я попытался использовать оба, но это все равно сработало только для меня. Я искал везде, но ничего не нашел. Итак, мой вопрос… Как я могу сказать боту отвечать либо администратору, либо мне (владельцу)?

Вот моя тестовая функция, на которой я остановился.

 @bot.command(name="ping")                                           
@commands.has_permissions(administrator = True)
async def ping(ctx):
    await ctx.channel.send("pong")
  

Ответ №1:

 @bot.command(name="ping")                                           
async def ping(ctx):
    user = ctx.author
    if await bot.is_owner(user):
       await ctx.channel.send("pong")
       return
    roles = user.roles
    for role in roles:
        if role.Permissions.administrator:
           await ctx.channel.send("pong")
           return

  

Комментарии:

1. Это выдало ошибку discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Member' object has no attribute 'permissions'