You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

ExecuteResult.cs 1.3 kB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Diagnostics;
  3. namespace Discord.Commands
  4. {
  5. [DebuggerDisplay(@"{DebuggerDisplay,nq}")]
  6. public struct ExecuteResult : IResult
  7. {
  8. public Exception Exception { get; }
  9. public CommandError? Error { get; }
  10. public string ErrorReason { get; }
  11. public bool IsSuccess => !Error.HasValue;
  12. private ExecuteResult(Exception exception, CommandError? error, string errorReason)
  13. {
  14. Exception = exception;
  15. Error = error;
  16. ErrorReason = errorReason;
  17. }
  18. public static ExecuteResult FromSuccess()
  19. => new ExecuteResult(null, null, null);
  20. public static ExecuteResult FromError(CommandError error, string reason)
  21. => new ExecuteResult(null, error, reason);
  22. public static ExecuteResult FromError(Exception ex)
  23. => new ExecuteResult(ex, CommandError.Exception, ex.Message);
  24. public static ExecuteResult FromError(IResult result)
  25. => new ExecuteResult(null, result.Error, result.ErrorReason);
  26. public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
  27. private string DebuggerDisplay => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
  28. }
  29. }