禁止协程不执行[无错误] |不和谐

时间:2019-06-20 21:23:29

标签: discord.py discord.py-rewrite

我正在创建一个新的bot(现在是我第三次了,但是已经有一段时间了),并且正在创建一个简单的ban命令。它与我的其他命令逐行相同,只是添加了@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 个答案:

答案 0 :(得分:1)

'User'对象没有属性'ban',相反,您需要传递一个成员对象:

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

您并没有收到任何错误,因为@ban.error捕获了这些错误,但是仅处理了BadArgument异常,而其余异常被忽略了。