禁止协程不执行[没有错误] | 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
异常,而其余的将被忽略。
我正在创建一个新的机器人(这是我的第三次,但已经有一段时间了)并且我正在创建一个简单的禁止命令。它与我的其他命令一样是逐行的,只是添加了 @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
异常,而其余的将被忽略。