我认为,如果说一个人没有运行命令的正确权限,或者有一个冷却时间之类的东西,而不是仅仅每隔...一次就处理一次,则抛出异常会更容易。因此,我创建了自己的异常,但问题是CommandService.ExecuteAsync()。Error仅返回CommandError.Exception,无法(据我所知)无法发现抛出了哪种类型的异常。
我的代码如下:
try { var result = await _service.ExecuteAsync(context, argPos);
if (!result.IsSuccess)
switch (result.Error)
{
case CommandError.BadArgCount:
await context.Channel.SendMessageAsync("Bad argument count.");
break;
case CommandError.UnknownCommand:
break;
case CommandError.Exception:
// This is what happens instead of the catch block.
break;
default:
await context.Channel.SendMessageAsync($"You ?? Broke ?? It ({result.ErrorReason})");
break;
}
}
catch (Exceptions.GameCommandNotReadyException e)
{
// The code never gets here because of the CommandError.Exception
}
弑天下
相关分类