diff --git a/src/Discord.Net.Core/RequestOptions.cs b/src/Discord.Net.Core/RequestOptions.cs index 3af3ded6f..ff5bf6125 100644 --- a/src/Discord.Net.Core/RequestOptions.cs +++ b/src/Discord.Net.Core/RequestOptions.cs @@ -8,9 +8,9 @@ namespace Discord public class RequestOptions { /// - /// Creates a new class with its default settings. + /// Gets or sets the default used when not specified with a request. /// - public static RequestOptions Default => new RequestOptions(); + public static RequestOptions Default { get; set; } = new RequestOptions(); /// /// Gets or sets the maximum time to wait for for this request to complete. @@ -53,7 +53,7 @@ namespace Discord internal static RequestOptions CreateOrClone(RequestOptions options) { if (options == null) - return new RequestOptions(); + return Default.Clone(); else return options.Clone(); } @@ -68,5 +68,49 @@ namespace Discord } public RequestOptions Clone() => MemberwiseClone() as RequestOptions; + + /// + /// Creates a copy of the current instance and sets the + /// property. + /// + public RequestOptions WithAuditLogReason (string reason) + { + var clone = Clone(); + clone.AuditLogReason = reason; + return clone; + } + + /// + /// Creates a copy of the current instance and sets the + /// property. + /// + public RequestOptions WithRetryMode (RetryMode retryMode) + { + var clone = Clone(); + clone.RetryMode = retryMode; + return clone; + } + + /// + /// Creates a copy of the current instance and sets the + /// property. + /// + public RequestOptions WithCancellationToken (CancellationToken cancelToken) + { + var clone = Clone(); + clone.CancelToken = cancelToken; + return clone; + } + + /// + /// Creates a copy of the current instance and sets the + /// property. + /// + public RequestOptions WithTimeout (int? timeout) + { + var clone = Clone(); + clone.Timeout = timeout; + return clone; + } } }