From 82225b76373fb92117ef4bab4a73449f4458e516 Mon Sep 17 00:00:00 2001 From: Misha133 Date: Sat, 5 Nov 2022 21:47:01 +0300 Subject: [PATCH] now supports dm channels in channel selects --- .../MessageComponents/RestMessageComponentData.cs | 7 ++++++- .../MessageComponents/SocketMessageComponent.cs | 2 +- .../MessageComponents/SocketMessageComponentData.cs | 8 ++++---- .../Entities/Interaction/Modals/SocketModal.cs | 2 +- .../Entities/Interaction/Modals/SocketModalData.cs | 4 ++-- 5 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs index ce25084b4..bc44d0df5 100644 --- a/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs +++ b/src/Discord.Net.Rest/Entities/Interactions/MessageComponents/RestMessageComponentData.cs @@ -79,7 +79,12 @@ namespace Discord.Rest : null; Channels = model.Resolved.Value.Channels.IsSpecified - ? model.Resolved.Value.Channels.Value.Select(channel => RestChannel.Create(discord, channel.Value)).ToImmutableArray() + ? model.Resolved.Value.Channels.Value.Select(channel => + { + if (channel.Value.Type is ChannelType.DM) + return RestDMChannel.Create(discord, channel.Value); + return RestChannel.Create(discord, channel.Value); + }).ToImmutableArray() : Array.Empty(); Roles = model.Resolved.Value.Roles.IsSpecified diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs index 2eaeef221..286629ceb 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponent.cs @@ -35,7 +35,7 @@ namespace Discord.WebSocket ? (DataModel)model.Data.Value : null; - Data = new SocketMessageComponentData(dataModel, client, client.State, client.Guilds.FirstOrDefault(x => x.Id == model.GuildId.GetValueOrDefault())); + Data = new SocketMessageComponentData(dataModel, client, client.State, client.Guilds.FirstOrDefault(x => x.Id == model.GuildId.GetValueOrDefault()), model.User.GetValueOrDefault()); } internal new static SocketMessageComponent Create(DiscordSocketClient client, Model model, ISocketMessageChannel channel, SocketUser user) diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs index e88875d96..0099ec77c 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/MessageComponents/SocketMessageComponentData.cs @@ -53,7 +53,7 @@ namespace Discord.WebSocket /// public string Value { get; } - internal SocketMessageComponentData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild) + internal SocketMessageComponentData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild, API.User dmUser) { CustomId = model.CustomId; Type = model.ComponentType; @@ -79,7 +79,7 @@ namespace Discord.WebSocket channel => { if (channel.Value.Type is ChannelType.DM) - return SocketDMChannel.Create(discord, state, channel.Value); + return SocketDMChannel.Create(discord, state, channel.Value.Id, dmUser); return (SocketChannel)SocketGuildChannel.Create(guild, state, channel.Value); }).ToImmutableArray() : null; @@ -90,7 +90,7 @@ namespace Discord.WebSocket } } - internal SocketMessageComponentData(IMessageComponent component, DiscordSocketClient discord, ClientState state, SocketGuild guild) + internal SocketMessageComponentData(IMessageComponent component, DiscordSocketClient discord, ClientState state, SocketGuild guild, API.User dmUser) { CustomId = component.CustomId; Type = component.Type; @@ -122,7 +122,7 @@ namespace Discord.WebSocket channel => { if (channel.Value.Type is ChannelType.DM) - return SocketDMChannel.Create(discord, state, channel.Value); + return SocketDMChannel.Create(discord, state, channel.Value.Id, dmUser); return (SocketChannel)SocketGuildChannel.Create(guild, state, channel.Value); }).ToImmutableArray() : null; diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModal.cs b/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModal.cs index f03ef54ab..7b4466af3 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModal.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModal.cs @@ -28,7 +28,7 @@ namespace Discord.WebSocket ? (DataModel)model.Data.Value : null; - Data = new SocketModalData(dataModel, client, client.State, client.Guilds.FirstOrDefault(x => x.Id == model.GuildId.GetValueOrDefault())); + Data = new SocketModalData(dataModel, client, client.State, client.State.GetGuild(model.GuildId.GetValueOrDefault()), model.User.GetValueOrDefault()); } internal new static SocketModal Create(DiscordSocketClient client, ModelBase model, ISocketMessageChannel channel, SocketUser user) diff --git a/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModalData.cs b/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModalData.cs index 4be4b1015..ec1fe9622 100644 --- a/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModalData.cs +++ b/src/Discord.Net.WebSocket/Entities/Interaction/Modals/SocketModalData.cs @@ -22,12 +22,12 @@ namespace Discord.WebSocket /// public IReadOnlyCollection Components { get; } - internal SocketModalData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild) + internal SocketModalData(Model model, DiscordSocketClient discord, ClientState state, SocketGuild guild, API.User dmUser) { CustomId = model.CustomId; Components = model.Components .SelectMany(x => x.Components) - .Select(x => new SocketMessageComponentData(x, discord, state, guild)) + .Select(x => new SocketMessageComponentData(x, discord, state, guild, dmUser)) .ToArray(); }