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;
+ }
}
}