discord.py 重写 |为我的命令出错
问题描述
现在我完成了我的审核命令 [大部分],我正在尝试添加错误.我已经犯了请指定一个成员"错误,但我无法让机器人说这个成员不存在"输入无效名称时.
Now that I finished my moderation commands [mostly], I am trying to add errors in. I already made the "please specify a member" error, but I cannot manage to make the bot say "this member does not exist" when an invalid name is input.
@client.command(name='kick',
brief='Kicks user',
aliases=['Kick'],
pass_context=True)
async def kick(context, member:discord.Member=None):
# Errors
if not member:
await context.send('Please specify a member.')
return
# Actual Kicking
if context.author.guild_permissions.kick_members == True:
await member.kick()
await context.send(f"{member.mention} was kicked ")
else:
await context.send(context.message.author.mention + ", you don't have permission")
这是我的命令之一,一切正常.如果该成员显然不存在,我想要一个显示找不到用户"的错误.例如,k!kick ijhguiserb
会让机器人说未找到成员",而不是在 shell 中给我一个错误.
This is one of my commands, where everything is working. I would like an error which says "User not found" if the member, obviously, doesn't exist. For example, k!kick ijhguiserb
would make the bot say, "Member not found," rather than giving me an error in the shell.
我们将不胜感激,谢谢!
Help would be appreciated, thanks!
解决方案
你必须定义一个 错误处理程序来处理ConversionError
You'll have to define an error handler to handle the ConversionError
from discord.ext.commands import ConversionError
@kick.error
async def kick_error(ctx, error):
if isinstance(error, (ConversionError, BadArgument)):
await ctx.send("Member not found")
else:
raise error
相关文章