Запрет сопрограммы не выполняется [без ошибок] |Discord.py - PullRequest
0 голосов
/ 21 июня 2019

Я создаю нового бота (мой третий раз, но это было давно), и я создаю простую команду запрета.Это строка за строкой, такая же, как и у других моих команд, с добавлением декоратора @commands.has_permissions() и вставкой для отображения запрета.Однако после добавления нескольких отпечатков, показывающих, куда он попадает, он не проходит мимо await user.ban().

# ---BAN---
@client.command(name="ban", pass_ctx=True)
@commands.has_permissions(ban_members=True)
async def ban(ctx, user: discord.User=None, *, reason: str=None):
    if not user:
        await ctx.send("Specify a user")
        return
    embed = discord.Embed (
        color = discord.Color.magenta()
    )
    embed.add_field(name=f"{user} was banned!", value=f"For reason: {reason}", inline=False)
    await user.ban()
    await ctx.send(embed=embed)


@ban.error
async def ban_error(ctx, error):
    if isinstance(error, BadArgument):
        await ctx.send("Please specify a **valid** user!")

Не выдается никакой ошибки, а только достигает await user.ban() перед простой остановкой.Мой пользователь как-то не прав или я совершил очевидную ошибку?

1 Ответ

1 голос
/ 21 июня 2019

Объект 'Пользователь' не имеет атрибута 'ban', вместо этого вам нужно передать объект-член:

async def ban(ctx, user: discord.Member=None, *, reason: str=None):

И вы не получаете никаких ошибок, потому что @ban.error их ловит, но толькообработка исключения BadArgument, в то время как остальные игнорируются.

...