禁止协程不执行[没有错误] | Discord.py

Ban coroutine not executing [no errors] | Discord.py

我正在创建一个新的机器人(这是我的第三次,但已经有一段时间了)并且我正在创建一个简单的禁止命令。它与我的其他命令一样是逐行的,只是添加了 @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() 才停止。是我的用户错了,还是我犯了一个明显的错误?

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

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

并且您没有收到任何错误,因为 @ban.error 正在捕获错误,但仅处理 BadArgument 异常,而其余的将被忽略。