From 7f773d957c11c96971899ff44929f98437b65b4a Mon Sep 17 00:00:00 2001 From: Misha133 Date: Thu, 3 Nov 2022 16:10:43 +0300 Subject: [PATCH] changes1 --- .../MessageComponents/RestMessageComponent.cs | 2 +- .../RestMessageComponentData.cs | 32 ++++++++++++++++--- .../Entities/Interactions/Modals/RestModal.cs | 2 +- .../Interactions/Modals/RestModalData.cs | 4 +-- .../SocketMessageComponentData.cs | 7 ++-- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs index e0eab6051..9d4827cd9 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponent.cs @@ -34,7 +34,7 @@ namespace Discord.Rest ? (DataModel)model.Data.Value : null; - Data = new RestMessageComponentData(dataModel); + Data = new RestMessageComponentData(dataModel, client); } internal new static async Task CreateAsync(DiscordRestClient client, Model model, bool doApiCall) diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs index 2b70b0040..aba3277fd 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs @@ -1,8 +1,12 @@ +using Discord.API; + using System; using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; using System.Text; using System.Threading.Tasks; + using Model = Discord.API.MessageComponentInteractionData; namespace Discord.Rest @@ -10,7 +14,7 @@ namespace Discord.Rest /// /// Represents data for a . /// - public class RestMessageComponentData : IComponentInteractionData, IDiscordInteractionData + public class RestMessageComponentData : IComponentInteractionData { /// public string CustomId { get; } @@ -23,8 +27,10 @@ namespace Discord.Rest /// /> public IReadOnlyCollection Channels { get; } + /// /> public IReadOnlyCollection Users { get; } + /// /> public IReadOnlyCollection Roles { get; } @@ -44,14 +50,24 @@ namespace Discord.Rest /// public string Value { get; } - internal RestMessageComponentData(Model model) + internal RestMessageComponentData(Model model, BaseDiscordClient discord) { CustomId = model.CustomId; Type = model.ComponentType; Values = model.Values.GetValueOrDefault(); + Value = model.Value.GetValueOrDefault(); + + if (model.Resolved.IsSpecified) + { + Users = model.Resolved.Value.Users.IsSpecified + ? model.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray() + : null; + } + + } - internal RestMessageComponentData(IMessageComponent component) + internal RestMessageComponentData(IMessageComponent component, BaseDiscordClient discord) { CustomId = component.CustomId; Type = component.Type; @@ -60,7 +76,15 @@ namespace Discord.Rest Value = textInput.Value.Value; if (component is API.SelectMenuComponent select) - Values = select.Values.Value; + { + Values = select.Values.GetValueOrDefault(null); + if (select.Resolved.IsSpecified) + { + Users = select.Resolved.Value.Users.IsSpecified + ? select.Resolved.Value.Users.Value.Select(user => RestUser.Create(discord, user.Value)).ToImmutableArray() + : null; + } + } } } } diff --git a/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs b/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs index 9229b63b5..e5453e9c4 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModal.cs @@ -23,7 +23,7 @@ namespace Discord.Rest ? (DataModel)model.Data.Value : null; - Data = new RestModalData(dataModel); + Data = new RestModalData(dataModel, client); } internal new static async Task CreateAsync(DiscordRestClient client, ModelBase model, bool doApiCall) diff --git a/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs b/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs index 697c58ed2..d21bd11e0 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/Modals/RestModalData.cs @@ -22,12 +22,12 @@ namespace Discord.Rest IReadOnlyCollection IModalInteractionData.Components => Components; - internal RestModalData(Model model) + internal RestModalData(Model model, BaseDiscordClient discord) { CustomId = model.CustomId; Components = model.Components .SelectMany(x => x.Components) - .Select(x => new RestMessageComponentData(x)) + .Select(x => new RestMessageComponentData(x, discord)) .ToArray(); } } diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs index dcfc1fb7c..e462da1aa 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs @@ -48,9 +48,10 @@ namespace Discord.WebSocket ? (component as API.TextInputComponent).Value.Value : null; - Values = component.Type.IsSelectType() - ? (component as API.SelectMenuComponent).Values.Value - : null; + if (component is API.SelectMenuComponent select) + { + Values = select.Values.GetValueOrDefault(null); + } } } }