From 60ac2acedc24a604c23b44b027f71cf418ef9220 Mon Sep 17 00:00:00 2001
From: CottageDwellingCat
<80918250+CottageDwellingCat@users.noreply.github.com>
Date: Sat, 11 Dec 2021 15:04:22 -0600
Subject: [PATCH] Add `IsAutocomplete` to rest command options (#368)
---
.../Entities/Interactions/IApplicationCommandOption.cs | 5 +++++
src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs | 1 +
.../Entities/Interactions/RestApplicationCommandOption.cs | 6 ++++++
.../SocketBaseCommand/SocketApplicationCommandOption.cs | 4 ++++
4 files changed, 16 insertions(+)
diff --git a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs
index 440c4bd6bb..72554fc988 100644
--- a/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs
+++ b/src/Discord.Net.Core/Entities/Interactions/IApplicationCommandOption.cs
@@ -32,6 +32,11 @@ public interface IApplicationCommandOption
///
bool? IsRequired { get; }
+ ///
+ /// Gets whether or not the option has autocomplete enabled.
+ ///
+ bool? IsAutocomplete { get; }
+
///
/// Gets the smallest number value the user can input.
///
diff --git a/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs b/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs
index 1207df282c..d703bd46bb 100644
--- a/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs
+++ b/src/Discord.Net.Rest/API/Common/ApplicationCommandOption.cs
@@ -56,6 +56,7 @@ public ApplicationCommandOption(IApplicationCommandOption cmd)
Default = cmd.IsDefault ?? Optional.Unspecified;
MinValue = cmd.MinValue ?? Optional.Unspecified;
MaxValue = cmd.MaxValue ?? Optional.Unspecified;
+ Autocomplete = cmd.IsAutocomplete ?? Optional.Unspecified;
Name = cmd.Name;
Type = cmd.Type;
diff --git a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs
index d5c261e0b4..1273b9a1e8 100644
--- a/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs
+++ b/src/Discord.Net.Rest/Entities/Interactions/RestApplicationCommandOption.cs
@@ -26,6 +26,9 @@ public class RestApplicationCommandOption : IApplicationCommandOption
///
public bool? IsRequired { get; private set; }
+ ///
+ public bool? IsAutocomplete { get; private set; }
+
///
public double? MinValue { get; private set; }
@@ -74,6 +77,9 @@ internal void Update(Model model)
if (model.MaxValue.IsSpecified)
MaxValue = model.MaxValue.Value;
+ if (model.Autocomplete.IsSpecified)
+ IsAutocomplete = model.Autocomplete.Value;
+
Options = model.Options.IsSpecified
? model.Options.Value.Select(Create).ToImmutableArray()
: ImmutableArray.Create();
diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs
index a19068d48b..bdb03c8b0c 100644
--- a/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs
+++ b/src/Discord.Net.WebSocket/Entities/Interaction/SocketBaseCommand/SocketApplicationCommandOption.cs
@@ -25,6 +25,8 @@ public class SocketApplicationCommandOption : IApplicationCommandOption
///
public bool? IsRequired { get; private set; }
+ public bool? IsAutocomplete { get; private set; }
+
///
public double? MinValue { get; private set; }
@@ -68,6 +70,8 @@ internal void Update(Model model)
MaxValue = model.MaxValue.ToNullable();
+ IsAutocomplete = model.Autocomplete.ToNullable();
+
Choices = model.Choices.IsSpecified
? model.Choices.Value.Select(SocketApplicationCommandChoice.Create).ToImmutableArray()
: ImmutableArray.Create();