Discord.py - бань всех на сервере без роли - PullRequest
0 голосов
/ 19 марта 2020

Я возился с командой запрета всех, пытаясь исправить ее, чтобы она действительно что-то делала вместо того, чтобы выдавать ошибку:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

Проблема в том, что я не знаю, как исключить роли администратора и бан участников без роли (pingable только с @everyone). Код, который я сейчас использую:

@client.command()
async def e(ctx):
    print('Logged in!')
    for member in client.get_all_members():
        await member.ban(reason=banreason + banreason2 + banreason3)
        await ctx.send(f"**{member.display_name}** was banned and invite links were sent. :white_check_mark:")
        print(f"Banned {member.display_name} and invite links were sent.")
    print("Banning is complete!")

Примечание: в banreason нет ошибки, он работает нормально и не имеет отношения к ошибке разрешения. Я также ставлю бота выше ролей, которых хочу забанить.

1 Ответ

1 голос
/ 19 марта 2020

Если вы хотите исключить всех, у кого есть роль, отличная от @everyone, сработает следующее:

@client.command()
async def e(ctx):
    for member in ctx.guild.members:
        if len(member.roles) < 2:
            await member.ban(reason=banreason + banreason2 + banreason3)
            await ctx.send(f"**{member.display_name}** was banned and invite links were sent. :white_check_mark:")
            print(f"Banned {member.display_name} and invite links were sent.")
    print("Banning complete!")
...